在java中读取unicode字符

时间:2013-09-11 05:51:48

标签: java unicode

我正在尝试使用java从utf-8中保存的文本文件中读取Unicode字符 我的文本文件如下

अ,अदेबानि,अन,अनसुला,अनसुलि,अनफावरि,अनजालु,अनद्ला,अमा,अर,अरगा,अरगे,अरन,अराय,अलखद,असे,अहा,अहिंसा,अग्रं,अन्थाइ,अफ्रि, बियन,खियन,फियन,बन,गन,थन,हर,हम,जम,गल,गथ,दरसे,दरनै,थनै,थथाम,सथाम, खफ,गल,गथ,मिख,जथ,जाथ,थाथ,दद,देख,न,नेथ,बर,बुंथ,बिथ,बिख,बेल,मम, आ,आइ,आउ,आगदा,आगसिर

我已尝试使用以下代码

import java.io.*;
import java.util.*;
import java.lang.*;
public class UcharRead
{
    public static void main(String args[])
    {
        try
        {
            String str;
            BufferedReader bufReader = new BufferedReader( new InputStreamReader(new FileInputStream("research_words.txt"), "UTF-8"));
            while((str=bufReader.readLine())!=null)
            {
                System.out.println(str);
            }
        }
        catch(Exception e)
        {
        }
    }
}

出去了 ???????????????????????? 任何人都可以帮助我

3 个答案:

答案 0 :(得分:9)

您(很可能)正确阅读文本,但是当您将其写出时,您还需要启用UTF-8。否则,无法以默认编码打印的每个字符都将变为问号。

尝试将其写入File而不是System.out(并指定正确的编码):

Writer w = new OutputStreamWriter(
   new FileOutputStream("x.txt"), "UTF-8");

答案 1 :(得分:6)

如果您使用UTF-8编码正确阅读文本,请确保您的控制台也支持UTF-8。如果你正在使用eclipse,那么你可以通过以下方式为你的控制台启用UTF-8编码:

Run Configuration->Common -> Encoding -> Select UTF 8

这是日食截图。

enter image description here

答案 2 :(得分:5)

你正在正确地阅读 - 问题几乎肯定只是你的控制台无法处理文本。验证这一点的最简单方法是打印出字符串中的每个char。例如:

public static void dumpString(String text) {
    for (int i = 0; i < text.length(); i++) {
        char c = text.charAt(i);
        System.out.printf("%c - %04x\n", c, (int) c);
    }
}

然后,您可以使用Unicode code charts验证每个字符是否正确。

一旦您确认您正在正确阅读文件,您就可以在输出方面进行操作 - 但重要的是一次只关注它的一面。尝试同时诊断输入输出编码中的潜在故障非常困难。