5
StringBuffer contents=new StringBuffer();
BufferedReader input =  new BufferedReader(new FileReader("/home/xyz/abc.txt"));
String line = null; //not declared within while loop
while (( line = input.readLine()) != null){
    contents.append(line);
}
System.out.println(contents.toString());

文件abc.txt包含

\u0905\u092d\u0940 \u0938\u092e\u092f \u0939\u0948 \u091c\u0928\u0924\u093e \u091c\u094b \u091a\u093e\u0939\u0924\u0940 \u0939\u0948 \u092

我想使用 Java 在控制台中以印地语显示。

如果我只是这样打印 String str="\u0905\u092d\u0940 \u0938\u092e\u092f \u0939\u0948 \u091c\u0928\u0924\u093e \u091c\u094b \u091a\u093e\u0939\u0929\u0940 \u09 \u0948 \u092";

System.out.println(str);

然后它工作正常,但是当我尝试从文件中读取时它不起作用。

帮帮我。

4

2 回答 2

6

使用Apache Commons Lang

import org.apache.commons.lang3.StringEscapeUtils;

// open the file as ASCII, read it into a string, then
String escapedStr; // = "\u0905\u092d\u0940 \u0938\u092e\u092f \u0939\u0948 ..."
// (to include such a string in a Java program you would have to double each \)

String hindiStr = StringEscapeUtils.unescapeJava( escapedStr );

System.out.println(hindiStr);

(确保您的控制台设置为显示印地语(正确的字体等)并且控制台的编码与您的 Java 编码相匹配。上面的 Java 代码只是简单的框架。)

于 2012-06-08T14:51:51.397 回答
5

您应该将文件中的内容作为UTF-8编码的印地语字符存储。例如,在您的情况下,它将是अभी समय है जनता जो चाहती है. 也就是说,不是保存 unicode 转义,而是直接保存原始印地语字符。然后,您可以像平常一样简单地阅读。

您只需确保您使用的编辑器使用 UTF-8 编码保存它。看到西班牙语字符显示不正确?

否则,您必须将文件设为.properties文件并使用它读取,java.util.Properties因为它固有地提供了 unicode 转义支持。

另请阅读在 java 中读取 unicode 字符

于 2012-06-08T14:02:50.810 回答