如何让 StreamReader 将 0xDF 读取为 "es zet"?
How to have StreamReader read 0xDF as an "es zet"?
如何让 StreamReader 读取 0xDF 作为 "es zet"? --- 或者让 MS Word 将 "es zet" 保存为 0xC3 0x178?
当德文字母 "es zet" 从 MS Access 复制并粘贴到记事本时,"es zet" 被保存为 0xC3 0x178。
当从 MS Word 中复制德文字母 "es zet" 并粘贴到记事本中时,"es zet" 也被保存为 0xC3 0x178。
当 MS Word 另存为 txt 时,"es zet" 更改为 0xDF。
记事本将 0xC3 0x178 解释为 "es zet"。记事本还将 0xDF 解释为 "es zet".
StreamReader(stFileName) 将 0xC3 0x178 读取为 "es zet" --- 将 0xDF 读取为未知。
(C#、WPF、Visual Studio 2019、MS Office 2019)
当您使用 MS Word 将文档另存为 txt 文件时,您会看到此对话框:
可以看到选择了"Windows (Default)"编码。这将根据您的计算机而改变,但对我(在西欧)来说,那是 Code Page 850。查看它,您可以看到 ß 的值为 0xDF。
在 .NET Framework(而非 .NET Core)上,当前机器的系统代码页可通过 Encoding.Default
访问。所以你可以使用 new StreamReader(stFileName, Encoding.Default)
.
但是,不同的机器会使用不同的代码页,这会把事情搞砸。我强烈建议告诉 MS Word 将文件另存为 "Unicode (UTF-8)":
您将能够使用 new StreamReader(stFileName)
阅读此文本文件,因为 StreamReader
默认为 UTF-8 编码。
如何让 StreamReader 读取 0xDF 作为 "es zet"? --- 或者让 MS Word 将 "es zet" 保存为 0xC3 0x178?
当德文字母 "es zet" 从 MS Access 复制并粘贴到记事本时,"es zet" 被保存为 0xC3 0x178。
当从 MS Word 中复制德文字母 "es zet" 并粘贴到记事本中时,"es zet" 也被保存为 0xC3 0x178。
当 MS Word 另存为 txt 时,"es zet" 更改为 0xDF。
记事本将 0xC3 0x178 解释为 "es zet"。记事本还将 0xDF 解释为 "es zet".
StreamReader(stFileName) 将 0xC3 0x178 读取为 "es zet" --- 将 0xDF 读取为未知。
(C#、WPF、Visual Studio 2019、MS Office 2019)
当您使用 MS Word 将文档另存为 txt 文件时,您会看到此对话框:
可以看到选择了"Windows (Default)"编码。这将根据您的计算机而改变,但对我(在西欧)来说,那是 Code Page 850。查看它,您可以看到 ß 的值为 0xDF。
在 .NET Framework(而非 .NET Core)上,当前机器的系统代码页可通过 Encoding.Default
访问。所以你可以使用 new StreamReader(stFileName, Encoding.Default)
.
但是,不同的机器会使用不同的代码页,这会把事情搞砸。我强烈建议告诉 MS Word 将文件另存为 "Unicode (UTF-8)":
您将能够使用 new StreamReader(stFileName)
阅读此文本文件,因为 StreamReader
默认为 UTF-8 编码。