`

汉字的字节长度

阅读更多

转自: http://longtangwan.iteye.com/blog/619700

 

依据编码形式:
GB-231280 编码为 2个字节(Byte) 包含了 20902 个汉字,其编码范围是 0x8140-0xfefe。
GB18030-2000(GBK2K) 在 GBK 的基础上进一步扩展了汉字,增加了藏、蒙等少数民族的字形。编码是变长的,其二字节部分与 GBK 兼容;四字节部分是扩充的字形、字位,其编码范围是首字节 0x81-0xfe、二字节0x30-0x39、三字节 0x81-0xfe、四字节0x30-0x39
Unicode 范围一般所用为\U0000-\UFFFF,对于CJK EXT B区汉字,范围大于\U20000
UTF, 按其基本长度所用位数分为UTF-8/16/32。其中:
UTF-8是变长编码,每个Unicode代码点按照不同范围,可以有1-3字节的不同长度,一般为3个字节。

UTF-16长度相对固定,只要不处理大于\U200000范围的字符,每个Unicode代码点使用16位即2字节表示,超出部分使用两个UTF-16即4字节表示。按照高低位字节顺序,又分为UTF-16BE/UTF-16LE。

UTF-32长度始终固定,每个Unicode代码点使用32位即4字节表示。按照高低位字节顺序,又分为UTF-32BE/UTF-32LE。


* 在hibernate中length=?的长度跟oracle varchar2(?)定义的长度相同,都表示?字节,但是必须在jsp页面中控制字符的长度,因为输入框检查一个中文算一个字符长度,但如果存到数据库中一个中文就是2~3个字节,因此必须控制中文字符的总数使之转换成字节时不超过数据库的最大长度。

*因此在数据库中定义varchar2(4000),则在界面最多只能存1333个中文(编码为utf-8),因为此编码下一个中文就是3个字节。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics