utf-8到底容纳多少个汉字?

sbgphl 2014-12-02 11:00:24
GBK ,可表示21886个字符。

为什么找不到utf-8到底容纳多少个汉字?谁能提供准确的数据?
...全文
3836 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
冥王之锤 2014-12-10
  • 打赏
  • 举报
回复
引用 14 楼 sbgphl 的回复:
[quote=引用 13 楼 eagleyan 的回复:] [quote=引用 12 楼 sbgphl 的回复:] [quote=引用 11 楼 eagleyan 的回复:] unicode的码点现在的定义是如此,但是我们也不保证将来不会有新的汉字加进来,因为从理论上来说汉字的数量有超过9万个,常用字都已经被收录到unicode里了,但是随着标准的修订,unicode可能会支持更多的汉字
\ 在字符集选择这个问题上,到底是gbk vs utf8 一直在争论,目前选择上看utf8确实有优势,音为外围配套很软件都是这个编码(不过也没见不支持gbk的); 但是从应用的角度未必,有很多偏僻字、少数民族的文字,用gbk还是首选。如果不考虑什么国际化gbk还是首选。 [/quote] GB18030是GBK的超集,GBK支持21003个汉字,和unicode差别并不大,不过GB18030也才收入了70244个汉字(数据来源http://baike.baidu.com/view/889058.htm),收集汉字的路还有很长要走。“如果不考虑什么国际化gbk还是首选”这句话也是错误的,GBK是双字节表示,在中英文混搭的环境(尤其英文比较多的情况下)占用的空间更大。采用什么字符集和应用程序的场景有关系。unicode是大势所趋,GBK在码点上没有任何优势,任何新项目都不应该考虑GBK,GB18030还有市场,不过比较小众.[/quote] 再次感谢,还有个疑问,假设现有utf8不能支持某个汉字,理论上未来是可以支持的。 那么加入这个汉字的工作是谁来做的?是标准组织做的工作?或者操作系统新版本发布更新解决了? 如果系统用了utf8,恰好系统需要处理一些偏僻字等,当然这个功能占不了整个系统的1%。此时怎么办? [/quote] ISO其全称是International Organization for Standardization。标准制定是很慢的。 Unicode 其中平面15和平面16上只是定义了两个各占65534个码位的专用区(Private Use Area),分别是0xF0000-0xFFFFD和0x100000-0x10FFFD。所谓专用区,就是保留给大家放自定义字符的区域,可以简写为PUA。 等不及就要自己定义了。
Coursera 2014-12-04
  • 打赏
  • 举报
回复
unicode的码点现在的定义是如此,但是我们也不保证将来不会有新的汉字加进来,因为从理论上来说汉字的数量有超过9万个,常用字都已经被收录到unicode里了,但是随着标准的修订,unicode可能会支持更多的汉字
sbgphl 2014-12-04
  • 打赏
  • 举报
回复
引用 9 楼 eagleyan 的回复:
取决于码点,而码点数量在http://www.unicode.org/versions/Unicode5.0.0/ch12.pdf#G12159是有说明的 加到一起就是28704个
那么可以认为utf-8中文最多就是28704个?
sbgphl 2014-12-04
  • 打赏
  • 举报
回复
引用 13 楼 eagleyan 的回复:
[quote=引用 12 楼 sbgphl 的回复:] [quote=引用 11 楼 eagleyan 的回复:] unicode的码点现在的定义是如此,但是我们也不保证将来不会有新的汉字加进来,因为从理论上来说汉字的数量有超过9万个,常用字都已经被收录到unicode里了,但是随着标准的修订,unicode可能会支持更多的汉字
\ 在字符集选择这个问题上,到底是gbk vs utf8 一直在争论,目前选择上看utf8确实有优势,音为外围配套很软件都是这个编码(不过也没见不支持gbk的); 但是从应用的角度未必,有很多偏僻字、少数民族的文字,用gbk还是首选。如果不考虑什么国际化gbk还是首选。 [/quote] GB18030是GBK的超集,GBK支持21003个汉字,和unicode差别并不大,不过GB18030也才收入了70244个汉字(数据来源http://baike.baidu.com/view/889058.htm),收集汉字的路还有很长要走。“如果不考虑什么国际化gbk还是首选”这句话也是错误的,GBK是双字节表示,在中英文混搭的环境(尤其英文比较多的情况下)占用的空间更大。采用什么字符集和应用程序的场景有关系。unicode是大势所趋,GBK在码点上没有任何优势,任何新项目都不应该考虑GBK,GB18030还有市场,不过比较小众.[/quote] 再次感谢,还有个疑问,假设现有utf8不能支持某个汉字,理论上未来是可以支持的。 那么加入这个汉字的工作是谁来做的?是标准组织做的工作?或者操作系统新版本发布更新解决了? 如果系统用了utf8,恰好系统需要处理一些偏僻字等,当然这个功能占不了整个系统的1%。此时怎么办?
Coursera 2014-12-04
  • 打赏
  • 举报
回复
取决于码点,而码点数量在http://www.unicode.org/versions/Unicode5.0.0/ch12.pdf#G12159是有说明的 加到一起就是28704个
Coursera 2014-12-04
  • 打赏
  • 举报
回复
引用 12 楼 sbgphl 的回复:
[quote=引用 11 楼 eagleyan 的回复:] unicode的码点现在的定义是如此,但是我们也不保证将来不会有新的汉字加进来,因为从理论上来说汉字的数量有超过9万个,常用字都已经被收录到unicode里了,但是随着标准的修订,unicode可能会支持更多的汉字
\ 在字符集选择这个问题上,到底是gbk vs utf8 一直在争论,目前选择上看utf8确实有优势,音为外围配套很软件都是这个编码(不过也没见不支持gbk的); 但是从应用的角度未必,有很多偏僻字、少数民族的文字,用gbk还是首选。如果不考虑什么国际化gbk还是首选。 [/quote] GB18030是GBK的超集,GBK支持21003个汉字,和unicode差别并不大,不过GB18030也才收入了70244个汉字(数据来源http://baike.baidu.com/view/889058.htm),收集汉字的路还有很长要走。“如果不考虑什么国际化gbk还是首选”这句话也是错误的,GBK是双字节表示,在中英文混搭的环境(尤其英文比较多的情况下)占用的空间更大。采用什么字符集和应用程序的场景有关系。unicode是大势所趋,GBK在码点上没有任何优势,任何新项目都不应该考虑GBK,GB18030还有市场,不过比较小众.
sbgphl 2014-12-04
  • 打赏
  • 举报
回复
引用 11 楼 eagleyan 的回复:
unicode的码点现在的定义是如此,但是我们也不保证将来不会有新的汉字加进来,因为从理论上来说汉字的数量有超过9万个,常用字都已经被收录到unicode里了,但是随着标准的修订,unicode可能会支持更多的汉字
\ 在字符集选择这个问题上,到底是gbk vs utf8 一直在争论,目前选择上看utf8确实有优势,音为外围配套很软件都是这个编码(不过也没见不支持gbk的); 但是从应用的角度未必,有很多偏僻字、少数民族的文字,用gbk还是首选。如果不考虑什么国际化gbk还是首选。
sbgphl 2014-12-03
  • 打赏
  • 举报
回复
引用 7 楼 t_jl1979 的回复:
[quote=引用 6 楼 sbgphl 的回复:] 理论上utf8 表达中文的总量应该最多,但在实践中有些偏僻字、少数民族的字,utf8不能完全表达。 gbk可以正常显示。 而且gbk有明确的汉字个数,utf8没有明确汉字的数量?为什么...
gbk是字符集与编码一起定义的,包含这两部分,所以有多少汉字的定义。 utf-8仅是编码,不包含字符集。所以utf-8没有汉字个数这样的概念,这个概念属于字符集。utf-8理论上是可以使用gbk等的字符集部分来表示GBK的。 unicode使用uft-8做为标准编码方案。但是也可以 有其他的编码方案,来表示Unicode。[/quote] 谢谢!也就是说很多人说的utf8可以表达的汉字大于gbk是没有根据的了,可以下这个结论了。
sbgphl 2014-12-03
  • 打赏
  • 举报
回复
有人知道准确的数字吗?
冥王之锤 2014-12-03
  • 打赏
  • 举报
回复
引用 6 楼 sbgphl 的回复:
理论上utf8 表达中文的总量应该最多,但在实践中有些偏僻字、少数民族的字,utf8不能完全表达。 gbk可以正常显示。 而且gbk有明确的汉字个数,utf8没有明确汉字的数量?为什么...
gbk是字符集与编码一起定义的,包含这两部分,所以有多少汉字的定义。 utf-8仅是编码,不包含字符集。所以utf-8没有汉字个数这样的概念,这个概念属于字符集。utf-8理论上是可以使用gbk等的字符集部分来表示GBK的。 unicode使用uft-8做为标准编码方案。但是也可以 有其他的编码方案,来表示Unicode。
sbgphl 2014-12-03
  • 打赏
  • 举报
回复
理论上utf8 表达中文的总量应该最多,但在实践中有些偏僻字、少数民族的字,utf8不能完全表达。 gbk可以正常显示。 而且gbk有明确的汉字个数,utf8没有明确汉字的数量?为什么...
冥王之锤 2014-12-03
  • 打赏
  • 举报
回复
引用 4 楼 t_jl1979 的回复:
位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节。 如表: 1字节 0xxxxxxx 2字节 110xxxxx 10xxxxxx 3字节 1110xxxx 10xxxxxx 10xxxxxx 4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 因此UTF-8中可以用来表示字符编码的实际位数最多有31位。 2^31=2,147,483,648 仅6字节编码方案。20多亿。总数要加上其他字节编码方案。
UTF-8是编码方案,实际容纳的汉字,受字符集影响,一般uft-8用于编码unicode,所以已unicode的容纳为准。 UTF-8也可以用于其他字符集编码。
冥王之锤 2014-12-03
  • 打赏
  • 举报
回复
位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节。 如表: 1字节 0xxxxxxx 2字节 110xxxxx 10xxxxxx 3字节 1110xxxx 10xxxxxx 10xxxxxx 4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 因此UTF-8中可以用来表示字符编码的实际位数最多有31位。 2^31=2,147,483,648 仅6字节编码方案。20多亿。总数要加上其他字节编码方案。
codingMozart 2014-12-03
  • 打赏
  • 举报
回复
utf使用unicode 字符集,unicode字符集汉字范围0x4e00到0x9fff,应该时20902个
sbgphl 2014-12-03
  • 打赏
  • 举报
回复
我推断单从汉字的数量来说可能还是gbk数量大。

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧