我正在通过Linux上的Java(Ubuntu)中的JDBC连接从一些旧的Cobol二进制数据文件中读取数据。瑞典人物å,ä,ö,Å,Ä和Ö是小盒子,里面有四个字符。这是一个例子。
运行程序时,实际上它们只是在控制台中显示为“空盒子”。当我将输出粘贴到文本编辑器时,我得到了包含文本的框。我认为这些字符是用ISO/IEC 8859-15
编码的,但我不确定。我喜欢替换角色并认为我做myOutptString.replace("", "Ä");
然后我将为其他角色做同样的事情。问题是我无法在target
函数中将空框作为replace
。我应该在target
中加入什么?也许甚至不可能使用replace
函数。
答案 0 :(得分:0)
尝试将信息作为字节读取,然后尝试使用UTF-8编码构造String。您的问题很可能是您的默认编码与您的信息不同。因此,在您的代码中,java会尝试根据您的默认编码来解释字节并失败。因此,如果您只是将字节读入byte[] buf
,然后尝试以这种方式读取它:
new BufferedReader(new InputStreamReader(new ByteArrayInputStream(buf), "UTF-8"));
它可能有所帮助。最终,您只需要弄清楚数据源的编码