为什么可以';Java是否读取UTF-8文件中的unicode字符?

为什么可以';Java是否读取UTF-8文件中的unicode字符?,java,encoding,io,Java,Encoding,Io,“unicode.txt”UTF-8文件 字符数据类型基于原始Unicode规范,该规范将字符定义为固定宽度的16位实体。此后,Unicode标准进行了更改,以允许表示需要超过16位的字符。Unicode代码点的范围现在是U+0000到U+10FFFF。从U+0000到U+FFFF的字符集称为基本多语言平面(BMP),代码点大于U+FFFF的字符称为补充字符。因此,char值表示BMP代码点,包括代理代码点或UTF-16编码的代码单元。int值表示所有Unicode代码点,包括补充代码点 特别是

“unicode.txt”UTF-8文件


字符数据类型基于原始Unicode规范,该规范将字符定义为固定宽度的16位实体。此后,Unicode标准进行了更改,以允许表示需要超过16位的字符。Unicode代码点的范围现在是U+0000到U+10FFFF。从U+0000到U+FFFF的字符集称为基本多语言平面(BMP),代码点大于U+FFFF的字符称为补充字符。因此,char值表示BMP代码点,包括代理代码点或UTF-16编码的代码单元。int值表示所有Unicode代码点,包括补充代码点

特别是,不要编写假定原语类型char(或字符对象)的值完全代表Unicode代码点的代码

(来自)


换句话说,在Java使用的可变长度UTF-16编码中,您偶然发现了一个由多个BMP代码单元(即
char
)表示的unicode字符。

char数据类型基于原始unicode规范,该规范将字符定义为固定宽度的16位实体。此后,Unicode标准进行了更改,以允许表示需要超过16位的字符。Unicode代码点的范围现在是U+0000到U+10FFFF。从U+0000到U+FFFF的字符集称为基本多语言平面(BMP),代码点大于U+FFFF的字符称为补充字符。因此,char值表示BMP代码点,包括代理代码点或UTF-16编码的代码单元。int值表示所有Unicode代码点,包括补充代码点

特别是,不要编写假定原语类型char(或字符对象)的值完全代表Unicode代码点的代码

(来自)


换句话说,您偶然发现了一个由多个BMP代码单元表示的unicode字符(即
char
)在Java使用的可变长度UTF-16编码中。

这里有一个通读unicode字符的常见模式:我相信最后一句话中您使用的术语是错误的。这里有一个通读unicode字符的常见模式:我相信最后一句话中您使用的术语是错误的。