java - 读入的文本与指定的文本不同

标签 java string encoding fonts character-encoding

我有一个应该很简单的问题。我一定错过了一些基本的东西。我创建了一个字符串可视化。

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/

相关文章:

java - SimpleDateFormat 错误地解析和比较时间

java - 如何将 OAEPParameterSpec 添加到 JWE 对象?

java - 用于 Java 的 HTML/XML 解析器

javascript - 从各种格式的字符串中删除空格并将其转换为数组的最佳方法

c++ - 以这种方式初始化的 char 数组是否自动添加了空终止符?

python - 替换字符串中第 n 次出现的子字符串

java - Java 中的 MP3 编码

java - TextInputFormat VS 非 UTF-8 编码

sqlite - 修复 sqlite 编码

java - URLEncoder 仅对某些 UTF-8 字符进行编码,而不是全部在字符串中