我有一个应该很简单的问题。我一定错过了一些基本的东西。我创建了一个字符串可视化。
String text = "\u0391\u039A\u03C1\u1F83\uA978\u0370\u03D8\u03C0";
如果我使用它作为具有默认字体的 JLabel 的参数,它会按照我的意愿打印希腊字符。
但是,如果我将相同的字符串(当然不带引号)放入文本文件中并读取该行并将该行分配给 JLabel,我会得到“未解释的”字符串。它看起来就像在文件中一样。我尝试过使用不同的编码来读取文件,如 ISO-8859-1、UTF-8、UTF-16 等,但无济于事。
如何使读入的文本与指定的文本片段一样?
尝试
String text = "\u0391\u039A\u03C1\u1F83\uA978\u0370\u03D8\u03C0";
System.out.println( "As ascii text = " + text );
和
String label = new String( readLabel( directory + File.separator
+ "testReadLabel.txt" ) );
System.out.println( "As ascii label = " + label );
当testReadLabel.txt包含上述文本且读取为标准时
BufferedReader br = new BufferedReader( new InputStreamReader(
new FileInputStream( fileName ), "ISO-8859-1" ) );
return br.readLine();
最佳答案
从文件中读取字符串后,必须先对字符串进行转义。你可以例如使用StringEscapeUtils来自Apache Commons为此:
String label = StringEscapeUtils.unescapeJava(stringFromFile);
关于java - 读入的文本与指定的文本不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27988692/