如何使用土耳其语字符在Java中读取UTF 8编码文件
我正在尝试读取UTF-8编码的txt文件,其中包含一些土耳其字符。基本上,我已经编写了一个基于轴的Web服务,该服务读取此文件并将输出作为字符串发送回。不知何故我无法正确读取字符。代码非常简单,如下所述:
import java.io.BufferedReader;import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CodingErrorAction;
public class TurkishWebService {
public String generateTurkishString() throws IOException {
InputStream isr = this.getClass().getResourceAsStream(
"/" + "turkish.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(isr,
"UTF8"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
return str;
}
public String normalString() {
System.out.println("webService normal text");
return "webService normal text";
}
public static void main(String args[]) throws IOException {
new TurkishWebService().generateTurkishString();
}
}
这是turkish.txt的内容,仅一行
Assalğçğıİİööşş
我得到标准输出
Assal?τ????÷÷??
请在这里提出我在做什么错。
回答:
您似乎正在正确地将文件数据从UTF-8字符串解码为UTF-16字符串。
System.out
执行从UTF-16字符串到默认JRE字符编码的代码转换操作。如果这不匹配,则接收字符数据的设备使用的编码将被破坏。因此,应将控制台设置为默认字符编码,否则会发生数据损坏。如何完成此操作取决于设备。
如果使用终端,则控制台在确定设备编码方面做得更好。
注意:最好使用 try-with-resources或至少 try-finally
来关闭流;使用标准编码常量(如果有)。
以上是 如何使用土耳其语字符在Java中读取UTF 8编码文件 的全部内容, 来源链接: utcz.com/qa/401190.html