我的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字符并来回转换它们的单元测试更容易了。