如何使用土耳其语字符在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

回到顶部