处理Java中的挪威语和冰岛语字母

时间:2015-03-11 04:57:58

标签: java maven unicode

在Java中, 我收到一个包含挪威字符和冰岛字符的文本输入。

我得到一个流然后将其解析为String并分配给一些变量并再次创建输出。

当我输出时,挪威和冰岛的角色会变形并得到一些?或者¶等。打开时输出文件也会得到相同的字符。

我正在使用Maven制作web项目.war。冰岛语/挪威语文本编码需要哪些基本设置?

我得到了一种设置Locale但无法使用它生成输出的方法。 Locale.setDefault(新的Locale(“is_IS”,“Iceland”));

请建议。怎么做?

实际角色:HÝS048

扭曲字符:H?S048(直接SOUT时)或H ?? S048(当我从字符串中获取字节并使用UTF-8放入字符串对象时)

更新(11:13) 我用过

CharsetEncoder encoder = Charset.forName("UTF-8").newEncoder(); encoder.onMalformedInput(CodingErrorAction.REPORT); encoder.onUnmappableCharacter(CodingErrorAction.REPORT); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\try1.csv"),encoder)); out.write(sb.toString()); out.flush(); out.close();

输出:H�S048

更新(12:41): 从HTTP源读取流时,我使用了以下内容:

`BufferedReader in = new BufferedReader(new InputStreamReader(apiURL.openStream(), "UTF-8"));`

它在控制台上完美显示输出。 我已经获取了CSV的值并将其放在逻辑Bean之后。

现在我需要创建CSV文件,但是当我从bean获取值时,它再次给出了扭曲的文本。我使用StringBuilder追加bean的值并将其写入文件。 :(希望最好。寻找想法

1 个答案:

答案 0 :(得分:0)

此问题的解决方案是以UTF-8格式获取数据,以UTF-8打印并以UTF-8创建文件

从URL读取数据如下:

BufferedReader in = new BufferedReader(new InputStreamReader(apiURL.openStream(), "UTF-8"));

然后将其设置为bean或执行任何操作。打印时

System.out.println(new String(sb.toString().getBytes("UTF-8"),"UTF-8"));

然后在再次创建文件时:

FileWriter writer = new FileWriter("d:\\try2.csv");
writer.append(new String(sb.toString().getBytes("UTF-8"),"UTF-8"));
writer.flush();
writer.close();

这就是我的问题得到解决的方法。