在Java中使用Apache POI从Excel文件加载时,多字节字符未正确显示

在Java中使用Apache POI从Excel文件加载时,多字节字符未正确显示,java,character-encoding,apache-poi,Java,Character Encoding,Apache Poi,我有一个Excel文件,其中包含一个符号(,如注释中所述,这不是ApachePOI问题,而是Windows7和Notepad++问题 毕竟我已经再次启动了我的windows7虚拟机(希望是最后一次;-)。windows7系统甚至没有为这种Unicode代码点提供具有字形的字体。因此,很明显,依赖于系统的任何东西都无法显示这一点:您的链接文件是input.xlsx,但您的代码加载input.xls。这是一个区别。另外,您使用的是什么apachepoi版本?在您的案例中,什么是System.out?

我有一个Excel文件,其中包含一个符号(,如注释中所述,这不是
ApachePOI
问题,而是
Windows7
Notepad++
问题


毕竟我已经再次启动了我的
windows7
虚拟机(希望是最后一次;-)。
windows7
系统甚至没有为这种Unicode代码点提供具有字形的字体。因此,很明显,依赖于系统的任何东西都无法显示这一点:您的链接文件是
input.xlsx
,但您的代码加载
input.xls
。这是一个区别。另外,您使用的是什么
apachepoi
版本?在您的案例中,什么是
System.out
?您的代码在Ubuntu Linux中使用
ApachePOI
版本
3.17
正常工作,其中
System.out
是能够正确显示Unicode的bash。在Windows 10中使用
ApachePOI
version
3.17
文件
out\u UTF-8.txt
out\u UTF-16.txt
是正确的,即使
CMD
不能正确显示Unicode。@AxelRichter我实际上尝试了.xls和.xlsx(每次都从Excel保存)。两者都不起作用。我不小心上传了带有.xls的代码。我已经编辑过了。@AxelRichter我正在使用POI 3.17。我的示例代码和实际应用程序都运行在Windows7上,使用Eclipse设置为UTF-8模式。并且没有一个文本文件——即使是您提到的文本文件——在记事本或记事本++中正确呈现。如果我将Excel文件作为归档文件打开,并查看包含符号的基础XML,即使在Notepad++中,它也无法正确呈现。:“如果我将Excel文件作为归档文件打开,并查看包含符号的基础XML,即使在Notepad++中,它也无法正确呈现。”这就是Notepad++的问题。从Excel保存的
*.xlsx
ZIP存档中的Office Open XML文件始终是
UTF-8
编码的。当然,从代码保存的文件中也没有
BOM
。因此,可能记事本++在没有
BOM
的情况下检测UTF编码有问题?但正如我所说的,我的Windows10记事本至少可以正确打开上面提到的两个文件。再次感谢。很好,文件编码工作正常,但这并不能解决我的实际问题(我的错——我没有在问题中讨论这个问题!)。如果它不能在Windows7上运行,那就更容易理解了。让我在Windows 10上测试我的应用程序。并向任何POI开发人员道歉,我可能会因为建议一个bug而无意冒犯他们@雅克:嗯,不,不是Unicode代码指向这个表情符号“在Windows7上不起作用”。仅在系统和依赖系统的所有应用程序中不可显示。这是因为缺乏一个系统字体有字形。只有提供自己字体的应用程序才能显示这一点。所以不要认为:“它不起作用。”这仅仅是因为你不能正确地看到雕文。