使用Java在控制台中显示印地语

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的控制台中用印地语显示它。

如果我只是打印像这样的字符串str =“\ u0905 \ u092d \ u0940 \ u0938 \ u092e \ u092f \ u0939 \ u0948 \ u091c \ u0928 \ u0901 \ u0901 \ u092> \ u092a \ u093a \ u090> \ u0924 \ u0924 \ u09 \ u0948 \ u092“;

的System.out.println(STR);

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

帮帮我。

使用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代码只是简单的。)

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

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

否则,您将必须使该文件成为.properties文件并使用java.util.Properties读取,因为它本身提供了unicode unescaping支持。

另请参阅阅读java中的unicode字符