为什么我会收到“ ”字符?

时间:2013-07-09 05:18:09

标签: c# parsing text-parsing odt non-unicode

我编写了一个快速实用的实用程序来解析文本文件,但在某些情况下,它会写出一个“ ”字符。我的实用程序从.txt文件中读取,该文件包含以下格式的“记录”:

Biography
Title:George F. Kennan: An American Life 
Author:John Lewis Gaddis
Kindle: B0054TVO1G
Hardcover: B007R93I1U
Paperback: 0143122150
Image link: <a href="https://rads.stackoverflow.com/amzn/click/com/B0054TVO1G" rel="nofollow noreferrer"><img src="http://images.amazon.com/images/P/B0054TVO1G.01.MZZZZZZZ.jpg" alt="Book Cover" /></a> 

...并将其中的行写入CSV文件,例如:

Biography,"George F. Kennan: An American Life","John Lewis Gaddis",B0054TVO1G,B007R93I1U,0143122150,<a href="https://rads.stackoverflow.com/amzn/click/com/B0054TVO1G" rel="nofollow noreferrer"><img src="http://images.amazon.com/images/P/B0054TVO1G.01.MZZZZZZZ.jpg" alt="Book Cover" /></a>

...但在某些情况下,如上所述,这个奇怪的角色会将自己附加到作者的名字上。在发生这种情况的大多数情况下,它似乎是.txt文件中的空格字符。在将作者的名字写入CSV文件之前,我正在修剪作者的名字,所以它显然不会被视为空间。

当我用这些字符保存文本文件时,我收到有关非unicode字符等的消息。

原因可能是什么?更好的是,如何通过搜索和替换操作删除它们?在记事本中,找不到它们,所以我必须逐个删除它们。

在进入.txt文件之前,此数据位于Open Office / .odt文件中,如果这对任何人都有意义。

顺便说一句,我不知道“stackoverflow”是如何进入上面的href的;它不在我粘贴的原始文本中......

更新

好奇这个角色是如何进入我的档案的。我确定没有把它(故意)放在那里,比我在上面的URL中添加“stackoverflow”更多。可能是对Environment.Newline的调用会添加吗?

以下是我的流程:

1) Copy and paste info from the interwebs into an Open Office/.odt file
2) Copy and past that into a text (Notepad) file
3) Open that text file programmatically and loop through it, writing to a new "csv"/.txt file.

更新2

愚蠢的我 - 我所要做的就是保存文件(这不会保存那些奇怪的字符),然后再打开它。 IOW,当我今天打开它(在家里,下班后)时,那些已经消失了。

更新3

我写得太快了 - 它用一个问号(一个“普通的”,而不是一个程式化的)取代了这个怪异的角色。

1 个答案:

答案 0 :(得分:1)

它们几乎肯定是不间断的空格U+00A0(尽管还有其他固定宽度的空格字符也是可能的。)这些字符不会被修剪为空格,但如果是空格则会被渲染为空格。文件的编码与输出设备的编码匹配。

我的猜测是你的文本文件是在CP-1252中(即Windows默认的单字节编码),但你的输出被渲染成好像是UTF-8。

通常,您可以将这些字符键入 AltGr + Space 。您可以尝试使用记事本,但不能保证。

相关问题