【发布时间】:2012-11-18 06:18:44
【问题描述】:
我正在编写一个程序,它将文件中的所有文本读入一个字符串,在该字符串上循环查看字符,然后使用 Stringbuilder 将字符附加回另一个字符串。我遇到的问题是当它被写回时,“ 和 ” 等特殊字符看起来像 � 字符。我不需要进行转换,我只是希望它以我阅读的方式写回:
StringBuilder sb = new StringBuilder();
string text = File.ReadAllText(filePath);
for (int i = 0; i < text.Length; ++i) {
if (text[i] != '{') { // looking for opening curly brace
sb.Append(text[i]);
continue;
}
// Do stuff
}
File.WriteAllText(destinationFile, sb.ToString());
我尝试使用不同的编码(UTF-8、UTF-16、ASCII),但结果变得更糟;我开始得到问号符号和汉字(是的,有点像霰弹枪的方法,但我只是在试验)。 我确实读过这篇文章:http://www.joelonsoftware.com/articles/Unicode.html ...但它并没有真正解释为什么我会看到我所看到的,除非在 C# 中,当读者遇到这样的奇怪字符时会开始切断位。提前感谢您的帮助!
【问题讨论】:
-
如果你调试它并跳过 File.ReadAllText 行,'text' 变量是否有正确的数据,还是有问题?
-
我发布了一些想法作为潜在答案。请看看,让我知道你发现了什么......
-
@taylorjonl 很奇怪,所有非 utf-8 字符都有一个 � 字符
标签: c# unicode encoding ascii stringbuilder