【发布时间】:2017-04-05 10:22:37
【问题描述】:
我想使用 Replace() 方法,但使用十六进制值而不是字符串值。
我有一个用 C# 编写文本文件的程序。
我不知道为什么,但是当程序编写“°”(-> 数字)时,它是 °(十六进制:C2 B0 而不是 B0)。
我只是想修补它,以纠正这个问题。
是否可以进行替换以将 C2B0 替换为 B0 ?这是怎么做的?
非常感谢:)
【问题讨论】:
-
为什么
Replace()不起作用?yourString.Replace((char)0xC2B0, (char)0xB0); -
这里的“十六进制”是什么意思并不清楚。如果您的意思是在将其视为 binary 时是文本文件中的数据,那么您可能应该将数据视为二进制开始。我的猜测是您实际上并不是指U+C2B0。
-
这不是替代品,而是编码(Unicode ANSI)问题。哪个应用程序将此呈现为“°”?您能否展示一个写入文件的代码的最小示例?
-
程序只需使用 File.WriteAllText() 将 DataTable 内容写入文本。
-
当你看到重音 A 时,你应该立即想到“utf8 !”是的,
°字符的 utf-8 编码确实是 0xC3 0xB0。不要修复它,utf-8 很好,只要确保你用来查看文件的任何程序都理解它是 utf-8。这可能需要生成 BOM,将new UTF8Encoding(true)传递给 StreamWriter 构造函数。如果你真的,真的讨厌它然后通过 Encoding.Default.