国际JRE6或JDK6或以“cp037”编码方案读取文件

时间:2010-05-24 20:19:35

标签: java programming-languages character-encoding db2

我一直在尝试使用JAVA以“cp037”编码方案读取文件。我能够读取UTF-8,UTF16等基本编码方案中的文件...经过对互联网的一些研究后我才知道我们需要安装charset.jar或国际版的JRE以支持扩展编码方案。任何人都可以给我发送国际版JRE6或JDK6的链接。或者有没有更好的方法,我可以读取cp037编码方案中的文件。

P.S:cp037是IBM Mainframes支持的字符编码方案。我只需要在Windows中显示一个文件,该文件是在IBM Mainframes机器上使用java程序生成的。

先谢谢你的帮助......: - )

4 个答案:

答案 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