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

Handling Norwegian and Icelandic letters in Java

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

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

当我进行输出时,挪威语和冰岛语字符会变形并得到一些 ?或 ¶ 等。输出文件在打开时也具有相同的字符。

我正在使用 Maven 制作 Web 项目。war。 Icelandic/Norwegian Text in Coding 需要哪些基本设置?

我得到了一种设置区域设置的方法,但无法使用它生成输出。 Locale.setDefault(新语言环境("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 的值并将其写入文件。 :( 希望最好。寻找想法

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

从URL读取数据如下:

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

然后将其设置为 beans 或者做任何你想做的事情。打印时

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();

我的问题就是这样解决的。