uft_8码中有占4字节的中文字符吗?

_EddieYoung_ 2009-11-07 05:33:01
网上都说在uft_8码中 一个中文字符占3个字节,有占4字节的中文字符吗?
如果有 请举例,谢谢~~
...全文
2560 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
momu52 2011-06-07
  • 打赏
  • 举报
回复
Mark,工作用到。。。
shreksu 2010-06-01
  • 打赏
  • 举报
回复
_EddieYoung_ 2009-11-09
  • 打赏
  • 举报
回复
hanb99 2009-11-09
  • 打赏
  • 举报
回复
mark
rzsheng 2009-11-09
  • 打赏
  • 举报
回复
不错,学习了
2009-11-08
  • 打赏
  • 举报
回复
“CJK 统一表意字符扩展 B 区”从 U+20000 到 U+2A6DF,不过我的系统上面没有这个区块的字体。
“CJK 兼容表意字符”从 U+2F800 到 U+2FA1F,这部分我是有字体的,贴两个:

U+2F800
_EddieYoung_ 2009-11-08
  • 打赏
  • 举报
回复
与 unicode编码表 对应的中文字符(完全版),我找了很久 都没有,下了个“文泉驿”的wqy-unibit,现

在还不知道怎么用。
_EddieYoung_ 2009-11-08
  • 打赏
  • 举报
回复
我说下我做的程序:
编程环境是 linux 。
将linux下的中文字符(utf_8) 转码成 Unicode码。
我把每个汉字都当做3字节的utf_8码 转成 2字节的 Unicode码(16位)。

现在如果有一个中文字符是4字节(utf_8), 那 转码 就得用4字节的 usc4 码(因为16位存不下)

问题就出来了,如果这个中文字符是4字节(utf_8)的,而我把它当3字节来转码,程序肯定崩溃了...
2009-11-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yb19860723 的回复:]
第二辅助平面,又称为表意文字补充平面 (Supplementary Ideographic Plane, 简称SIP),整个范围在 U+20000 - U+2FFFD 。现时摆放“中日韩统一表意文字扩展B区”,共43,253个汉字,以及中日韩兼容表意文字增补

表意文字又是什么呢?
(以下是我百度搜的)

表意字的六大分类和举例
表意字分为
1、抽象字:用抽象的形符构成。如 一、二、三、四、上、下、口(方)、回、小。
2、象物字:字形象某种实物。如日、月、鹿、虎、马、鱼、大、人、自、止、肉、角、车、册、山、丘、水、川、泉、火、木、禾、黍、来、桑、栗、象、龙、鸟、佳、龟、虫、它、贝、子
女、首、耳、目、口、心、衣等
3、指示字:在象物字或象实物字的形符上加指示符号以示意。如本、末、刃、亦。
4、象物字式的象事字:外形上看很像象物字,但这类字代表是“事”。如又、矢等
5、会意字:在抽象字、指示字之外,凡是会和两个以上意符来表示一个跟这些意符本身的意义都不相同的意义的字,我们都看作会意字.
(1)图形式:如宿、从、北、无夹、即、取、及、采、受、共等。
(2)利用偏旁间的位置关系的会意字:正、之、出、各、降、逐、相、朝等
(3)主体和器官的会意字: 如见、欠、既、企、臭、鸣、
(4)重复同一偏旁而成的会意字:如珏、林、磊、森等。
(5)偏旁连读成语的会意字:如凭、劣、扁、
(6)其他:删、掰、明、笔等
6、变体字:用改变某一个字的字形的方法来表意。如:片。

下一个问题: “ 其他極少使用的 Unicode 輔助平面的字”

这些 “其他極少使用的 Unicode 輔助平面的字?” 又是些什么呢? 辅助平面字符又是什么呢?长什么样子呢?

百度百科 辅助平面 只说了句,辅助平面字符要用上4字节来储存。

突然想到,辅助平面字符难道像是上面的 表意字符 那样? 那不是普通的中文字符吗?干嘛 又放到第二辅助平

面中呢?(又称为表意文字补充平面 ),有点晕~~  再思索...


[/Quote]
看完所有的 Unicode 区块就不会有这个问题了~~
西方大多数是拼音文字,所以我们的文字被他们叫做“表意文字”~~
CJK 统一表意扩展 A:U+3400 - U+4DBF
CJK 统一表意字符:U+4E00 - U+9FFF
CJK 兼容表意字符:U+F900 - U+FAFF
CJK 统一表意扩展 B:U+20000 - U+2A6DF
CJK 兼容表意字符:U+2F800 - U+2FA1F
其中扩展 B 区里面的字你一辈子都不会见到几个,“CJK 兼容表意字符”里面的字通常在“CJK 统一表意字符”都有对应。
XyRbj 2009-11-08
  • 打赏
  • 举报
回复
楼主研究的够深啊。mark
2009-11-08
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yb19860723 的回复:]
“CJK 兼容表意字符”里面的字通常在“CJK 统一表意字符”都有对应。
这是什么意思呢,原本在“CJK 统一表意字符”有这个字,又在“CJK 兼容表意字符”出现了?兼容表意字符 是做什么用的呢?

"其中扩展 B 区里面的字你一辈子都不会见到几个",看到这,感觉似乎是自己太矫情了~~~hehe...

心里隐隐约约还是担心这个的隐患,因为自己没有搞明白,搞透彻...
[/Quote]
Unicode 字符表里面有一个属性是“等价字符”,我在“CJK 兼容表意字符”里面抽了几个样,都有“CJK 统一表意字符”里面的等价字符,当然是不完全统计~~
扩展 B 区里面我的系统是没有字体覆盖的,全是乱码,我随机取了几个:
[size=24px]
_EddieYoung_ 2009-11-08
  • 打赏
  • 举报
回复
第二辅助平面,又称为表意文字补充平面 (Supplementary Ideographic Plane, 简称SIP),整个范围在 U+20000 - U+2FFFD 。现时摆放“中日韩统一表意文字扩展B区”,共43,253个汉字,以及中日韩兼容表意文字增补

表意文字又是什么呢?
(以下是我百度搜的)

表意字的六大分类和举例
表意字分为
1、抽象字:用抽象的形符构成。如 一、二、三、四、上、下、口(方)、回、小。
2、象物字:字形象某种实物。如日、月、鹿、虎、马、鱼、大、人、自、止、肉、角、车、册、山、丘、水、川、泉、火、木、禾、黍、来、桑、栗、象、龙、鸟、佳、龟、虫、它、贝、子
女、首、耳、目、口、心、衣等
3、指示字:在象物字或象实物字的形符上加指示符号以示意。如本、末、刃、亦。
4、象物字式的象事字:外形上看很像象物字,但这类字代表是“事”。如又、矢等
5、会意字:在抽象字、指示字之外,凡是会和两个以上意符来表示一个跟这些意符本身的意义都不相同的意义的字,我们都看作会意字.
(1)图形式:如宿、从、北、无夹、即、取、及、采、受、共等。
(2)利用偏旁间的位置关系的会意字:正、之、出、各、降、逐、相、朝等
(3)主体和器官的会意字: 如见、欠、既、企、臭、鸣、
(4)重复同一偏旁而成的会意字:如珏、林、磊、森等。
(5)偏旁连读成语的会意字:如凭、劣、扁、
(6)其他:删、掰、明、笔等
6、变体字:用改变某一个字的字形的方法来表意。如:片。

下一个问题: “ 其他極少使用的 Unicode 輔助平面的字”

这些 “其他極少使用的 Unicode 輔助平面的字?” 又是些什么呢? 辅助平面字符又是什么呢?长什么样子呢?

百度百科 辅助平面 只说了句,辅助平面字符要用上4字节来储存。

突然想到,辅助平面字符难道像是上面的 表意字符 那样? 那不是普通的中文字符吗?干嘛 又放到第二辅助平

面中呢?(又称为表意文字补充平面 ),有点晕~~ 再思索...

  • 打赏
  • 举报
回复
UTF-8 使用一至四個位元組為每個字元編碼:

128 個 US-ASCII 字元只需一個位元組編碼(Unicode 範圍由 U+0000 至 U+007F)。
帶有附加符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及它拿字母則需要二個位元組編碼(Unicode 範圍由 U+0080 至 U+07FF)。
其他基本多文種平面(BMP)中的字元(這包含了大部分常用字)使用三個位元組編碼。
其他極少使用的 Unicode 輔助平面的字元使用四位元組編碼。

我想你不用太担心吧。
_EddieYoung_ 2009-11-08
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 hpsmouse 的回复:]
引用 10 楼 yb19860723 的回复:
第二辅助平面,又称为表意文字补充平面 (Supplementary Ideographic Plane, 简称SIP),整个范围在 U+20000 - U+2FFFD 。现时摆放“中日韩统一表意文字扩展B区”,共43,253个汉字,以及中日韩兼容表意文字增补

表意文字又是什么呢?
(以下是我百度搜的)

表意字的六大分类和举例
表意字分为
1、抽象字:用抽象的形符构成。如 一、二、三、四、上、下、口(方)、回、小。
2、象物字:字形象某种实物。如日、月、鹿、虎、马、鱼、大、人、自、止、肉、角、车、册、山、丘、水、川、泉、火、木、禾、黍、来、桑、栗、象、龙、鸟、佳、龟、虫、它、贝、子
女、首、耳、目、口、心、衣等
3、指示字:在象物字或象实物字的形符上加指示符号以示意。如本、末、刃、亦。
4、象物字式的象事字:外形上看很像象物字,但这类字代表是“事”。如又、矢等
5、会意字:在抽象字、指示字之外,凡是会和两个以上意符来表示一个跟这些意符本身的意义都不相同的意义的字,我们都看作会意字.
(1)图形式:如宿、从、北、无夹、即、取、及、采、受、共等。
(2)利用偏旁间的位置关系的会意字:正、之、出、各、降、逐、相、朝等
(3)主体和器官的会意字: 如见、欠、既、企、臭、鸣、
(4)重复同一偏旁而成的会意字:如珏、林、磊、森等。
(5)偏旁连读成语的会意字:如凭、劣、扁、
(6)其他:删、掰、明、笔等
6、变体字:用改变某一个字的字形的方法来表意。如:片。

下一个问题: “ 其他極少使用的 Unicode 輔助平面的字”

这些 “其他極少使用的 Unicode 輔助平面的字?” 又是些什么呢? 辅助平面字符又是什么呢?长什么样子呢?

百度百科 辅助平面 只说了句,辅助平面字符要用上4字节来储存。

突然想到,辅助平面字符难道像是上面的 表意字符 那样? 那不是普通的中文字符吗?干嘛 又放到第二辅助平

面中呢?(又称为表意文字补充平面 ),有点晕~~  再思索...



看完所有的 Unicode 区块就不会有这个问题了~~
西方大多数是拼音文字,所以我们的文字被他们叫做“表意文字”~~
CJK 统一表意扩展 A:U+3400 - U+4DBF
CJK 统一表意字符:U+4E00 - U+9FFF
CJK 兼容表意字符:U+F900 - U+FAFF
CJK 统一表意扩展 B:U+20000 - U+2A6DF
CJK 兼容表意字符:U+2F800 - U+2FA1F
其中扩展 B 区里面的字你一辈子都不会见到几个,“CJK 兼容表意字符”里面的字通常在“CJK 统一表意字符”都有对应。
[/Quote]

“CJK 兼容表意字符”里面的字通常在“CJK 统一表意字符”都有对应。
这是什么意思呢,原本在“CJK 统一表意字符”有这个字,又在“CJK 兼容表意字符”出现了?兼容表意字符 是做什么用的呢?

"其中扩展 B 区里面的字你一辈子都不会见到几个",看到这,感觉似乎是自己太矫情了~~~hehe...

心里隐隐约约还是担心这个的隐患,因为自己没有搞明白,搞透彻...
whywen_MoJian 2009-11-08
  • 打赏
  • 举报
回复
mark..顶三楼
squiffy 2009-11-07
  • 打赏
  • 举报
回复
上面有个错误更正一下:

GB2312的内码和unicode是不一样的,而是据我所知,GB2312中的字没有超过FFFF的unicode编码。具体是不是超过了,还是得查汉字具体的unicode编码表。
squiffy 2009-11-07
  • 打赏
  • 举报
回复
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

UTF-8的编码规则很简单,只有二条:

1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。

2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

下表总结了编码规则,字母x表示可用编码的位。

Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

下面,还是以汉字“严”为例,演示如何实现UTF-8编码。

已知“严”的unicode是4E25(100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800-0000 FFFF),因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。然后,从“严”的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,“严”的UTF-8编码是“11100100 10111000 10100101”,转换成十六进制就是E4B8A5。

GB2312到unicode转换就是一一对应的,从GB2312字符集中,没有超过FFFF以上的汉字编码,因此GB2312编码的汉字中的字一定不会出现4个UTF-8编码的。

其实中国的所谓的GB标准都是超unicode标准的,最新的GB标准是GB 18030,完全兼容GB2312,该标准中存在4字节UTF-8编码的汉字,这个标准收录了70244个汉字。GBK就是一个怪胎,是吧GB_13000的一些字凑到GB_2312中的。

关于汉字国标问题参考:
http://zh.wikipedia.org/wiki/GB_18030
http://zh.wikipedia.org/wiki/GB_13000
http://zh.wikipedia.org/wiki/GBK
http://zh.wikipedia.org/wiki/GB_2312
现在显然在国内99%以上都是用GB_2312的,如果不用所有程序都报废(汉字编码超过16Bits).

所以让你程序崩溃的可能性没有。除非大家都崩溃。
_EddieYoung_ 2009-11-07
  • 打赏
  • 举报
回复
我很想知道,有什么中文字符时占4字节的。之前我写了一个程序都是按3字节转化的,且测试多次没有出现错误,突然有人告诉我说有4字节的中文字符,我就知道我的程序有BUG了,很想有什么字符可以让我的程序崩溃!!!
临碣 2009-11-07
  • 打赏
  • 举报
回复
至少不是所有的都是3个字节

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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