最近我阅读了whats-the-difference-between-unicode-and-utf8及相关主题。
现在我正在读书并阅读关于字符流的内容:
处理的数据是16位Unicode字符。
据我所知,“16位Unicode字符”表示utf-16。如果我没有设置显式编码,那么java使用默认的OS编码,但我可以使用InputStreamReader / OutputStreamWriter设置explisitly编码。
我不明白关于сharacter流的内容或短语Data dealt with is 16-bit Unicode characters.
是不正确的?
答案 0 :(得分:0)
计算机唯一知道的是1和0。指定编码是告诉JVM如何解释"或者"解密" 1和0。如果您对UTF 8数据的InputStream使用UTF-16编码,那么您的解密"算法显然不匹配"加密"算法,你将获得各地有趣的人物。
答案 1 :(得分:0)
“处理的数据是16位Unicode字符”表示数据是16位代码单元。每个单元是代理代码单元或代表基本多语言平面(BMP)中的字符,范围为U + 0000到U + FFFF。代理代码单元本身并不代表任何东西;只有一对代理代码单元可能有意义,表示BMP之外的字符。
所以“字符”根本不一定是字符,即使我们可以将它们称为“Java字符”。
当您阅读UTF-8编码文件时,您应该使用解释UTF-8编码数据的例程并产生16位代码单元。
答案 2 :(得分:0)