有 Java 编程相关的问题?

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

java读文件和写文件,具有UTF 8字符(不同语言)

我有一个文件,上面有这样的字符:“Joh 1:1”ஆதியிலே வார்த்தை இருந்தது, அந்த வார்த்தை தேவனிடத்திலிருந்தது, அந்த வார்த்தை தேவனாயிருந்தது. "

www.unicode.org/charts/PDF/U0B80.pdf

当我使用以下代码时:

bufferedWriter = new BufferedWriter (new OutputStreamWriter(System.out, "UTF8"));

输出框和其他奇怪的字符如下:

"�P�^����O���;�&书信电报;�唉ՠ؛”

有人能帮忙吗

以下是完整的代码:

File f=new File("E:\\bible.docx");
        Reader decoded=new InputStreamReader(new FileInputStream(f), StandardCharsets.UTF_8);
        bufferedWriter = new BufferedWriter (new OutputStreamWriter(System.out, StandardCharsets.UTF_8));
        char[] buffer = new char[1024];
        int n;
        StringBuilder build=new StringBuilder();
        while(true){
            n=decoded.read(buffer);
            if(n<0){break;}
            build.append(buffer,0,n);
            bufferedWriter.write(buffer);
        }

enter image description here

StringBuilder值显示UTF字符,但在窗口中显示时显示为方框

找到了问题的答案!!! 编码正确(即UTF-8)。Java将文件读取为UTF-8,字符串为UTF-8,问题是netbeans的输出面板中没有显示该文件的字体。更改输出面板(Netbeans->;工具->;选项->;杂项->;输出选项卡)的字体后,我得到了预期的结果。当它显示在JTextArea(字体需要更改)中时,同样适用。但是我们不能在windows的命令提示符下更改字体


共 (2) 个答案

  1. # 1 楼答案

    System.out离操作系统太近,不够通用。在您的例子中,NetBeans控制台可能正在使用操作系统编码,并且IDE选择了字体

    先写一个文件。如果将其设置为HTML,甚至可以双击它,并在内部指定正确的编码。注意使用“UTF-8”,因为“UTF8”是特定于Java的(“UTF-8”也可以在Java中使用)。也许是JDesktop.getDesktop().open("... .html");

    一个带有JTextPane的小JFrame也可以

  2. # 2 楼答案

    事实证明泰米尔语是16位编码的,所以只需使用UTF-16而不是UTF-8。通过这样做,我能够在Eclipse控制台中打印泰米尔文字