有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的Unicode文件处理

BufferedReader br=new BufferedReader( new InputStreamReader(new FileInputStream("g.txt"), "UTF-16"));
ArrayList<String> al=new ArrayList<String>();
String str;
while((str=br.readLine())!=null)
{
    al.add(str);
}
Iterator<String> it=al.iterator();
while(it.hasNext())
{
    str=it.next();
    System.out.println(str);
}

在这段代码中,我可以正确地从Unicode文件中读取数据,也可以正确地插入arrylist,但当我尝试迭代数据时,它只打印问号,就像 ???? ?? ????, ?????, 等等 你能帮我解决这个问题吗


共 (1) 个答案

  1. # 1 楼答案

    这个关于StackOverflow的问题已经存在了,它与系统有关。出来println()使用默认的系统代码页,而不是设置的区域设置

    要使用正确的字符编码打印文本,请创建PrintStream的新实例,并使用该实例打印文本行:

    String text_containing_non_latin_characters = "...";
    PrintStream ps = new PrintStream(System.out, true, "UTF-16");
    ps.println(text_containing_non_latin_characters);