我一直在尝试使用JAVA以“cp037”编码方案读取文件。我能够读取UTF-8,UTF16等基本编码方案中的文件...经过对互联网的一些研究后我才知道我们需要安装charset.jar或国际版的JRE以支持扩展编码方案。任何人都可以给我发送国际版JRE6或JDK6的链接。或者有没有更好的方法,我可以读取cp037编码方案中的文件。
P.S:cp037是IBM Mainframes支持的字符编码方案。我只需要在Windows中显示一个文件,该文件是在IBM Mainframes机器上使用java程序生成的。
先谢谢你的帮助......: - )
答案 0 :(得分:1)
经过对互联网的一些研究后,我发现我们需要安装charset.jar或国际版的JRE以支持扩展编码方案。
你确定这个字符集不包含在标准发行版中吗?
此代码适用于jdk 1.6.0_17 64位(Windows):
Charset charset = Charset.forName("cp037");
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(f), charset));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println("read line: " + line);
}
答案 1 :(得分:1)
我发现了Java 5的this webpage(注意,它可能与Java 6不同)。 JRE或JDK没有特殊的,独立的“国际”版本;但是,lib\charsets.jar
可能会也可能不会安装在您的系统上,具体取决于您的操作系统支持的内容。
您确定JRE安装目录中没有charsets.jar
吗?在我的系统上,它位于%JDK_HOME%\jre\lib
下。 (注意:不在%JDK_HOME%\lib
下)。
搜索您的系统,看看您是否已在某处charsets.jar
。 (请注意,它被称为charsets.jar
,带有s,而非charset.jar
)。
答案 2 :(得分:1)
这是一个略有不同的代码,WinXP上的Java 1.6通过网络上传从Mainframe获取文本:
String text = new String(data, 0, data.length, "Cp037");
text = text.replace('', 'a');
text = text.replace('Ý', '[');
text = text.replace('¨', ']');
注意,有几个字符需要特别注意。
答案 3 :(得分:1)
正如雷迪所说,有时charsets.jar就在那里,但问题仍然存在。
我找到的唯一解决方案是使用eclipse的buildpath功能将jar添加到jre系统库中。
对默认的Windows java版本进行了更改。
另一种选择是安装jdk而不是jre。
有关java编码方案的一些信息链接:
http://www.oracle.com/technetwork/java/javase/readme-142177.html
http://download.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html