当前位置: 首页 > 面试题库 >

如何使用土耳其语字符在Java中读取UTF 8编码文件

韦翰音
2023-03-14
问题内容

我正在尝试读取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来关闭流;使用标准编码常量(如果有)。



 类似资料:
  • 有没有办法根据土耳其语改变R中的字符编码系统? 我试图在将R脚本保存为iso-8859-9、windows-1254或latin5时更改编码。最后的编码给了我最好的结果,但是当我重新加载R脚本时,并不是所有的字符都被正确保存。例如: 原件: 重新加载(第二个示例中的字符已刷新): 有人有主意吗?提前谢谢!

  • Byte[]utf8=str1.getBytes(“Windows-1254”);test3=新字符串(“windows-1254”); 输出为I:3/Ortakl:1/2:°:1/2 但上述代码在控制台程序中工作良好,即main method main method打印类似 isortakli的输出 任何建议都必须是可行的

  • 问题内容: 我想在英语和土耳其语区域设置中将土耳其语字符串翻译成小写。我正在这样做: 输出为: 但是我想要这样的输出: 这在Java中可行吗? 问题答案: 如果使用构造函数,则可以并且必须将语言,国家和变量设置为单独的参数: 因此,您的测试程序使用语言“ tr-TR”和“ en_US”创建语言环境。对于测试程序,可以使用和。 如果您使用的是Java 1.7+,则还可以使用以下命令解析语言标签: 创

  • 问题内容: 我没有找到有关如何在 Windows 上处理此问题的良好说明,因此我在这里进行了介绍。 土耳其语()和()中有两个字母,它们是python错误处理的。 鉴于区域设置正确,应该如何: 和 我尝试甚至没有帮助。 如何让python正确处理这两个字母? 问题答案: 您应该使用PyICU

  • 问题内容: 使用python 2.7: 尝试了一些解码(例如,myCity.decode(“ utf-8”)。lower()),但找不到执行该操作的方法。 如何降低这种字母?(“ I”>“ı”,“İ”>“ i”等) 编辑:在土耳其语中,“ I”的小写字母是“ı”。“ i”的大写字母为“İ” 问题答案: 有些人建议使用语言环境。至少在Ubuntu上,也许与此bug有关,设置此语言环境不会产生预期的结

  • 问题内容: 我试图根据此方法的输出以UTF-8或Windows-1252格式读取文件: 到目前为止,我有: 我遇到的问题是将实例转换为。 此外: 文件本身的名称()不能被认为是特定的; 有时文件名将包含UTF-8字符,有时还包含Windows-1252。文件的内容也是如此(但是,如果文件名和文件内容 始终 具有匹配的字符集)。 只有内部的逻辑可以选择要应用的字符集,因此 在 调用此方法 之前 尝试