我的Java程序正在尝试读取文本文件(将大型机VSAM文件转换为平面文件)。我相信这意味着该文件以EBCDIC格式编码。

我正在使用com.ibm.jzos.FileFactory.newBufferedReader(fullyQualifiedFileName, ZFile.DEFAULT_EBCDIC_CODE_PAGE);打开文件。

并使用String inputLine = inputFileReader.readLine()读取一行并将其存储在java字符串变量中进行处理。当字符串变量中存储的文本变为unicode时,我读取了该文本。

存储在java字符串变量中时,如何确保内容没有损坏?

最佳答案

字符集解码器会将字节映射到字符串的正确Unicode。反之亦然。

唯一的问题是BufferedReader.readLine将删除行尾(也是EBCDIC行尾NEL char,\u0085-也是公认的Unicode换行符)。因此,在编写时自己编写NEL,或设置系统行分隔符属性。

没有什么比编写带有256个EBCDIC字符并来回转换它们的单元测试更容易了。

10-06 13:16