我有以下代码:
using (StreamReader sr = new StreamReader(path, Encoding.GetEncoding("shift-jis"), true)) {
mCertainFileIsUTFFormat = !sr.CurrentEncoding.Equals(Encoding.GetEncoding("shift-jis"));
mCodingFromBOM = sr.CurrentEncoding;
String line = sr.ReadToEnd();
return line.Split('\n');
}
Run Code Online (Sandbox Code Playgroud)
如果没有BOM,基本上读取文件并假设Shift-Jis.唉,这种方法总是,无论如何,返回Shift-JIS编码,即使有问题的文件中有BOM.我在这里做错了什么或者是否存在已知问题?我总是可以打开文件二进制文件并自己完成工作,但这应该做我想要的:)
您需要进行Read任何类型的呼叫- 在阅读之前StreamReader不会检测编码.即你打电话后得到编码:ReadToEnd
String line = sr.ReadToEnd();
mCodingFromBOM = sr.CurrentEncoding;
Run Code Online (Sandbox Code Playgroud)
信息:StreamReader.CurrentEncoding
在第一次调用StreamReader的任何Read`方法之后,该值可能会有所不同,因为在第一次调用Read方法之前不会执行编码自动检测.
| 归档时间: |
|
| 查看次数: |
412 次 |
| 最近记录: |