如果c#中没有ANSI代码页怎么办?

本文关键字:代码 怎么办 ANSI 如果 | 更新日期: 2023-09-27 18:16:29

我正在用Unity3d开发一个应用程序。

如你所知,我们可以用c#编写代码,因为Unity3d使用Mono提供环境。我不知道这是由于单声道或Unity3d本身,但有一个问题设置ANSI编码的一些语言,如中国,日本和韩国。当我在Android上运行我的应用程序时,我需要的所有代码页都会出现这样的错误消息。

NotSupportedException: CodePage 50227 not supported

如果你读了这里的解释,它说

"最后一列的星号表示该代码页由。net框架本地支持,而不管底层平台是什么。"

CodePage 50227用星号表示!

我说我在Android上有问题,但在Windows上也会出现异常。事实上,比在Android上要好得多,因为在Windows上我可以使用一些ANSI编码,这些编码不工作,但与使用Visual Studio编写代码相比仍然非常有限。

如果mono或Unity3d不完全支持ANSI编码,我能做些什么吗?

我真的需要阅读一些用ANSI编码编写的文本文件,并将它们保存在UTF编码中。当然,我可以为这项工作创建一个jar插件,但由于性能原因,我不想这样做。(我已经在Unity3d中使用了太多的jar文件)如果可能的话,我想用c#或c++编写。

如果c#中没有ANSI代码页怎么办?

CodePage 50227由星号

表示。

对不起,这无关紧要。Mono(无论在Windows还是Android上运行)都不是"。net框架"。这是一个兼容实现的尝试,但是微软的。net文档并不打算成为非微软API实现的可靠参考。

如果mono或Unity3d不完全支持ANSI编码,我能做些什么吗?

这些编码应该被底层操作系统完全支持。不幸的是,如果Mono本身不支持它们(这应该让我感到惊讶,但我想这不是真的),那么你将不得不使用API的平台特定部分(例如Windows上的p/invoke)。

我怀疑再为Android添加一个jar插件会导致显著的性能变化。

就我个人而言,我会走那条路。但是,如果您事先知道需要哪些特定的编码,并且没有太多的编码,我认为您可以用c#编写自己的Encoding类,作为项目的一部分来支持每种编码。这不是我喜欢的东西,特别是对于像CP 50227这样的多字节编码,但是您应该能够编写一个常规的c#程序来构建您需要的数据表,基于编码的。net实现。因此,实际的体力劳动可以相当少。