替换Java中的特殊字符

时间:2017-05-21 16:12:30

标签: java character-encoding

我正在通过Linux上的Java(Ubuntu)中的JDBC连接从一些旧的Cobol二进制数据文件中读取数据。瑞典人物å,ä,ö,Å,Ä和Ö是小盒子,里面有四个字符。这是一个例子。

enter image description here

运行程序时,实际上它们只是在控制台中显示为“空盒子”。当我将输出粘贴到文本编辑器时,我得到了包含文本的框。我认为这些字符是用ISO/IEC 8859-15编码的,但我不确定。我喜欢替换角色并认为我做myOutptString.replace("", "Ä");然后我将为其他角色做同样的事情。问题是我无法在target函数中将空框作为replace。我应该在target中加入什么?也许甚至不可能使用replace函数。

1 个答案:

答案 0 :(得分:0)

尝试将信息作为字节读取,然后尝试使用UTF-8编码构造String。您的问题很可能是您的默认编码与您的信息不同。因此,在您的代码中,java会尝试根据您的默认编码来解释字节并失败。因此,如果您只是将字节读入byte[] buf,然后尝试以这种方式读取它:

new BufferedReader(new InputStreamReader(new ByteArrayInputStream(buf), "UTF-8"));

它可能有所帮助。最终,您只需要弄清楚数据源的编码