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

San*_*utt 5 java utf-8

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());
Run Code Online (Sandbox Code Playgroud)

文件abc.txt包含

\u0905\u092d\u0940 \u0938\u092e\u092f \u0939\u0948 \u091c\u0928\u0924\u093e \u091c\u094b \u091a\u093e\u0939\u0924\u0940 \u0939\u0948 \u092
Run Code Online (Sandbox Code Playgroud)

我想在使用Java的控制台中用印地语语言显示它.

如果我只打印这样的字符串str ="\ u0905\u092d\u0940\u0938\u092e\u092f\u0939\u0948\u091c\u0928\u0924\u093e\u091c\u094b\u091a\u093e\u0939\u0924\u0940\u0939\u0948\u092";

的System.out.println(STR);

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

帮帮我.

the*_*ber 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);
Run Code Online (Sandbox Code Playgroud)

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


ada*_*shr 5

您应该将内容作为UTF-8编码的印地语字符存储在文件中.例如,在你的情况下,它会??? ??? ?? ???? ?? ????? ??.也就是说,不是保存unicode转义,而是直接保存原始的印地语字符.然后,您可以像平常一样阅读.

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

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

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