mrK*_*mrK 8 c# text symbols character-encoding special-characters
我正在调用File.ReadAllText()一个程序,用于格式化我拥有的一些文件.
其中一些文件包含®(174)符号.但是,在读取文本时,返回的字符串包含?(65533)符号®(174).
是什么导致这种情况,我该如何解决?
Ree*_*sey 13
这可能是由于不匹配造成的Encoding.使用ReadAllText重载,允许您指定Encoding在读取文件时使用的正确.
除非可以检测到UTF-32,否则默认重载将采用UTF-8.任何其他编码都将错误地通过.
Dav*_*vid 10
该文件很可能包含与默认编码不同的编码.如果您知道,可以使用File.ReadAllText方法(字符串,编码)覆盖来指定它.
代码示例:
string readText = File.ReadAllText(path, Encoding.Default); // <-- change the encoding to whatever the encoding really is
Run Code Online (Sandbox Code Playgroud)
如果您不知道编码,请参阅此前的SO问题:如何在文件编码未知时使用ReadAllText
你需要在调用时指定编码File.ReadAllText,除非文件实际上是UTF-8,听起来并非如此.(基本上,单参数重载相当于传入UTF-8作为第二个参数.我相信它还会检测具有适当字节顺序标记的UTF-32.)
的第一件事就是制定出哪些编码它是在(如ISO-8859-1 -但你需要检查这一点),然后传递作为第二个参数.
例如:
Encoding isoLatin1 = Encoding.GetEncoding(28591);
string text = File.ReadAllText(path, isoLatin1);
Run Code Online (Sandbox Code Playgroud)
它始终是你知道你试着去阅读它作为文本之前编码的二进制数据是使用非常重要.对于文件,网络流,任何东西都是如此.
| 归档时间: |
|
| 查看次数: |
15622 次 |
| 最近记录: |