我有一个 Java 代码,可以读取 Excel 文件并将其写入文本文件。当我获取输出文本文件时,我在记事本中只能看到这样的符号。“‷搮ㄱ〱〰〠〰〠〰〠〰〠〰〠〰〠〰〠〰〠〰〠〰〠〰〠”但如果我在写字板或 ms-word 中打开文本文件,数据就会正确显示。可能是什么错误?
答案1
错误在于使用记事本。记事本使用文件的前几个字节来决定编码,您必须使用特定编码打开文件才能正确读取它。
以下是供您学习的链接:http://blogs.msdn.com/oldnewthing/archive/2007/04/17/2158334.aspx
得到的经验教训是:不要使用记事本。
答案2
您的数据的第一部分很可能看起来像某种编码 (UTF-16) 的 Unicode。这在以前的 Windows 版本中一直是一个问题,您可以阅读在本文中。不过,我认为从 Windows Vista 开始该问题已经得到解决。
一个简单的解决方法是不要使用记事本来存储这些数据。
答案3
命令行开关:notepad /A <filename>
,可用于强制文件以 ANSI 编码方式打开,在这种情况下将导致文件正确打开。
这里的问题是“布什隐瞒事实”漏洞,一些 txt 文件有一个 2 或 3 个字节序列,称为字节顺序标记 (BOM),用于标识文件的正确编码,如果文件缺少此标记,记事本会猜测文件的编码,并且可能会猜错。没有 BOM 来指示文件是 ANSI,因此 ANSI 文件始终存在被猜错的风险。一些文本编辑器假设文件是 ANSI,如果它没有 BOM,记事本确定文件编码的方法可能因版本而异。