2015-11-12 28 views
0

我想知道下面的代码是否可以在Linux中工作。Linux中的WINDOWS-31J等价编码

InputStreamReader isr = new InputStreamReader(file.getInputStream(),"WINDOWS-31J"); 

如果不是好心指向我,我可以使用WINDOWS-31J相应的Linux字符编码的方向。

在此先感谢您的任何帮助。

+0

你可能会实现你自己的InputStream(Reader)来完成解码。基于此表执行起来非常容易:http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT – selbie

+0

试试看看。您确定您正在阅读的文件是否实际上将用Windows-31J编码进行编码? – Random832

回答

1

是的,windows-31j/MS932附带Oracle版本的Java 7 for Solaris,Linux和Windows。完整列表见Supported Encodings

1

据Oracle文档,它支持:

https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html

Canonical Name for java.nio API | Canonical Name for java.io API and java.lang API | Description 
windows-31j       MS932            Windows Japanese 

所以,当你调用它:

InputStreamReader isr = new InputStreamReader(file.getInputStream(),"MS932"); 

它提到的字符集的扩展定义设置:lib/charsets.jar。您可能必须将其包含在您的项目中。它位于jre \ lib \ charsets.jar下的JDK目录中。

+1

您不必添加'charsets.jar'。它会自动包含在内。 – Andreas