我有一个应该很简单的问题。我必须遗漏一些基本的东西。我创建了一个String viz。
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包含上述文本且read是标准
时BufferedReader br = new BufferedReader( new InputStreamReader(
new FileInputStream( fileName ), "ISO-8859-1" ) );
return br.readLine();
答案 0 :(得分:1)
在您从文件中读取字符串后,首先必须 unescape 字符串。你可以,例如使用StringEscapeUtils中的Apache Commons执行此操作:
String label = StringEscapeUtils.unescapeJava(stringFromFile);
答案 1 :(得分:0)
反斜杠转义码由编译器在字符串文字中翻译。它们未在文件IO中翻译。如果要解析转义码,您必须自己执行此操作或使用库为您执行此操作。