我正在尝试使用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)
{
}
}
}
出去了 ???????????????????????? 任何人都可以帮助我
答案 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
这是日食截图。
答案 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验证每个字符是否正确。
一旦您确认您正在正确阅读文件,您就可以在输出方面进行操作 - 但重要的是一次只关注它的一面。尝试同时诊断输入和输出编码中的潜在故障非常困难。