0

我有一个纯文本,在用文本文档打开后工作正常,没有什么奇怪的。但是当我用 MS Word 打开它并单击“显示段落”选项时,一些空格显示为一个类似于度数符号的符号(一个小圆圈。如果您在 MS Word 文档中键入 alt+255,您可以看到它)。我想知道如何摆脱它。它之所以出现是因为在传出字符串的某些地方我删除了 $nbsp,但我想会有后遗症。

我希望有人能帮忙。这真的很烦人。

4

1 回答 1

3

问题很可能是字符集之一。在我的测试中,alt-number 在 windows 中不起作用,所以我在一个名为 Scite 的文本编辑器中完成了它,然后复制并粘贴到 windows 中。复制和粘贴时的字符 alt-255 使用“显示段落”选项创建了度数符号,但保存为字符 A0。这是用于不间断空格的 windows-1252 字符(这似乎与预期相符鉴于它们出现在您有不间断空格的位置)。

C# 默认使用 unicode 作为其字符串编码,因此如果我要将文件加载到 c# 中,除非我另有说明,否则它将假定它是 unicode。在我的情况下,我的文件是61 A0 62 A0 63“ab c”(空格实际上是非中断空格)。当 c# 加载时,它会正确读取 a、b 和 c,但A0不是有效的 unicode 字符(或字符的开头),因此它会将其加载为 unicode 字符 65533(替换字符),这是它找到时使用的一个无法解释的角色。

通过我的测试,如果我加载它并指定编码是代码页 1252,那么它会正确加载不间断空间,然后我可以使用 string.replace 替换它。

        result = File.ReadAllText("testfile.txt", System.Text.Encoding.GetEncoding(1252));
        result = result.Replace((char)160, ' ');

最重要的是确保在加载此文件时使用正确的编码,以便正确解释字符。假设您自己生成了文件,您应该知道它使用的是什么编码。

最后一点是,正如我在评论中提到的那样,您的问题听起来可能是您没有像您认为的那样删除不间断的空格,因为它们似乎在您保存的文件中。尽管上面回答了如何在文件中删除它们的问题,但最好从源头处理问题,而不是首先将它们放入文件中。也许会打开另一个问题,详细说明您如何创建文件,询问为什么要保存不间断的空格。

于 2013-08-28T17:38:11.090 回答