默认C#字符串编码

Dan*_*Dan 9 c# string

我在C#中遇到了一些默认字符串编码的问题.我需要从某些文件/数据包中读取字符串.但是,这些字符串包括128-256范围内的字符(扩展ascii),并且所有这些字符都显示为问号,而不是正确的字符.例如,在读取字符串时,它可能会显示为"S?meStr?n?" 如果字符串包含扩展的ascii字符.

现在,有没有办法更改我的应用程序的默认编码?我知道在java中你可以从命令行定义默认字符集.

Jon*_*eet 23

没有一个单一的"扩展ASCII"编码.有许多不同的8位编码与底部128值的ASCII兼容.

您需要找出您的文件实际使用的编码,以及在使用StreamReader(或您正在使用的任何其他内容)读取数据时的具体信息.例如,您可能需要编码Windows-1252:

Encoding encoding = Encoding.GetEncoding(1252);
Run Code Online (Sandbox Code Playgroud)

.NET字符串始终是UTF-16代码点的序列.你不能改变它,你不应该尝试.(在Java中也是如此,在调用etc 时你真的不应该使用平台默认编码,getBytes()除非那是你真正的,真正的意思.)

  • 在阅读欧洲同行的文件时,我遇到过这种情况.解决方案是,"请告诉我你是如何编码文件的"然后我可以在阅读文件时使用正确的编码.通常,我最终将编码放在配置设置中,这样如果它们发生变化,我们仍然可以在没有代码更改的情况下读取文件. (3认同)
  • 您应该要求他们使用 UTF-8,除非他们能给出不能使用的充分理由。 (2认同)