【发布时间】:2011-07-01 15:54:08
【问题描述】:
C# 中的默认字符串编码存在一些问题。我需要从某些文件/数据包中读取字符串。但是,这些字符串包含 128-256 范围内的字符(扩展 ascii),并且所有这些字符都显示为问号,而不是正确的字符。例如,当读取一个字符串时,它可能会显示为“S?meStr?n?”如果字符串包含扩展的 ascii 字符。
现在,有什么方法可以更改我的应用程序的默认编码?我知道在java中你可以从命令行定义默认字符集。
【问题讨论】:
-
问题可能出在您的查看器中(网页、WPF 应用程序等)。你如何显示文本?可以发一些例子吗?
-
我实际上已经发现了这个问题。我对 C# 的编码特性不太熟悉。我已经将我的数据包/文件读取类从 Encoding.ASCII 编辑为 Encoding.Default,实际上它现在似乎正在正确读取字符串(至少从数据包中)。
-
不要使用 Encoding.Default - 它可以在机器之间更改,您的代码将无法正常工作(除了 Jon 和 Sean 的答案,请查看 joelonsoftware.com/articles/Unicode.html)