我有如下文本:
每年都要接受心脏检查才能留在移植名单上。但有些病人缺少重要的心脏信息。作为值班实习生,你的工作就是确保你找到
如您所见,第一行没有问题,但第二行损坏了。即使我使用 Vim 或 LibreOffice 打开它,它看起来也是这样。有办法解决这个问题吗?我尝试将编码更改为 UTF-8,但无济于事。谢谢!
答案1
在我看来,它可能一开始是某种带有替换标记的标准文本,并被一个没有足够防御性编码的实用程序处理——这是这个 xkcd 漫画。例如,它可能是使用有缺陷的 XSLT 处理器生成的。
如果您看到的是纯文本,那么除了返回原始来源之外,您可能别无选择。纯文本文件不包含额外的隐藏信息。错误的编码可能会导致问题,但如果您的编辑器加载时假设每个字符的编码为字节,并且该编码是错误的,您仍然会看到更多以垃圾字符形式出现的内容。
有可能存在文件结束符或空字符,导致文本尾部无法显示,但如今,任何还算不错的文本编辑器都不会被这种现象所欺骗。
答案2
请记住,始终使用备份副本,直到您确定它能正常工作为止。
您可以尝试将文本文件加载到 vim 中,同时强制使用不同的编码方法
启动 vim (或者 gvim,以其中一个为准)
:e ++enc=utf-8 textfilename.txt
vim 知道几种编码类型,请尝试反复循环使用它们。来自帮助文件:
支持的“编码”值为:
latin1、iso-8859-n、cp437、cp737、cp775、cp850、cp852、cp855、cp857、cp860、cp861、cp862、cp863、cp865、cp866、cp869、utf-8、ucs-2、ucs-2le、utf-16、utf-16le、ucs-4、ucs-4le
我对原始文本文件的问题是确定它开头是否有 BOM(字节顺序标记),这会给我们一些提示,让我们知道它认为它是什么。