1

我编写了一个快速而简单的实用程序来解析文本文件,但在某些情况下它会写出一个“�”字符。我的实用程序从包含以下格式的“记录”的 .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

我写得太早了——它用问号代替了奇怪的字符(一个“正常”的,而不是一个程式化的)。

4

1 回答 1

1

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

我的猜测是您的文本文件采用 CP-1252(即 Windows 默认的单字节编码),但您的输出被渲染为 UTF-8。

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

于 2013-07-09T05:37:56.200 回答