我有一个程序,当被要求提供类的可视化表示时,会输出一个包含Unicode字符的字符串。
从技术上讲,该程序还能够将可视化表示解析回其类结构。
但是,如果我复制&粘贴可视化表示并将其粘贴回作为输入,读取的字符串是错误的。例如:
(¬(a) ∨ ((¬(b) ∧ (c ∧ d)) ∨ e))
变为(¬(a) ⨠((¬(b) ⧠(c ⧠d)) ⨠e))
问题:
如何处理包含Unicode的输入以获取忠实表示输入的String?
答案 0 :(得分:1)
损坏的数据是解析二进制数据的结果,该二进制数据将UTF-8
编码的文本表示回String
,同时使用不同的字符集,例如ISO-8859-1
。您的问题不包含任何显示如何输出和解析数据的代码,因此我只能提供一般解决方案:
如果您使用InputStreamReader
读取数据,请使用
InputStreamReader isr = new InputStreamReader(sourceInputStream, "UTF-8");
如果数据来自文件,请不要使用FileReader
,因为这使用的系统的字符集可能与UTF-8
不同
如果您读入已经可用的数据byte
- array:
String text = new String(byteArray, "UTF-8");
如果这没有帮助您需要提供更多信息,即您必须解析数据的代码和输入来源的解释。