unicode编码有几个版本,utf-8,utf-16和他是什么关系?

cdhit 2005-10-31 09:57:46
同上
...全文
1605 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylgm44 2005-11-02
  • 打赏
  • 举报
回复
就是说,ascii字符在utf-8里面还是一样的,一个字节表示,超出ascii字符范围的,就用多字节表示,字节的数目由第一字节确定,最多6字节。如下:
utf-8:
1字节:0XXXXXXX(ascii)
2字节:110XXXXX 10XXXXXX
3字节:1110XXXX 10XXXXXX 10XXXXXX
4字节:11110XXX 10XXXXXX 10XXXXXX 10XXXXXX
5字节:。。。
utf-16:所有:XXXXXXXX XXXXXXXX
ascii:XXXXXXXX 00000000
fiftymetre 2005-11-02
  • 打赏
  • 举报
回复
Unicode定义了两种编码格式:UTF-8和UTF-16。UTF-8编码与ASCII向后兼容。任何合法的ASCII编码都会自动成为合法的UTF-8编码,使得将现有的ASCII数据库转换为Unicode数据库非常容易。UTF-8使用一个码点值来生成一个分布到一到四个字节上的位模式。

给定字符的UTF-8编码中的每个字节都被称为一个编码单元。标准ASCII字符集中字符的码点使用0x00到0x7F范围内的单一编码单元进行编码。大多数非亚洲文字用一个或两个编码单元(或字节)来表示每个字符。

在Unicode 3.1中,定义了大量新的增补字符,每个字符需要包含四个UTF-8编码单元。

第二种重要的编码格式是UTF-16,它使用了一个双字节的编码单元。最重要的是,UTF-16和ASCII一样简单,因为编码单元的值与0x0000到0xFFFF范围内的任意码点的码点值相同。对于该范围内的字符,UTF-16是固定长度的双字节编码。再回过来看一下我们前面涉及ghe的例子,你可以使用直接与该字符的码点对应的编码单元0x0490在UTF-16中表示它。


PS:好的网页设计师都知道:(
ylgm44 2005-11-02
  • 打赏
  • 举报
回复
utf-16固定使用两个字节表示一个字符,平常所说的unicode编码就是utf-16的。utf-8同ddmor所述。
ddmor 2005-11-02
  • 打赏
  • 举报
回复
UTF-> UCS Transformation Format
ddmor 2005-11-02
  • 打赏
  • 举报
回复
UCS 和 Unicode 只是分配整数给字符的编码表,而Utf8和Utf16则是具体的编码实现。
ddmor 2005-11-02
  • 打赏
  • 举报
回复
我这里先不讨论他们之间编码的具体细节,简单说一下:
unicode和utf-8之间最大的区别就是在存储上。unicode是宽字符存储(字符都是2个字节或4个字节来存储),而utf-8是多字节存储,字符的个数是不确定的(比如英文字符是1个字节表示,汉字可以是2个到6个来表示),其字符的首字节的前几位表明了它的字节个数。比如某个3字节汉字的uft-8编码(二进制)如下:
1110xxxx 10xxxxxx 10xxxxxx
首字节中1的个数为3表明该汉字用3个字节来表示。
myheartgon 2005-11-01
  • 打赏
  • 举报
回复
unicode编码是一种编码标准,utf-8,utf-16应该是它的具体实现方法!
cdhit 2005-10-31
  • 打赏
  • 举报
回复
还有问一下文本的编码问题,
在什么情况下才能确定两个.txt文本是一摸一样的。
譬如说用UltraEdit打开两个文本,“切换成十六进制编码模式”,如果在这时观察到的
十六进制值一摸一样的话,是不是可以认为这两个文本是完全相同文本。
我用一个unicode到gb的转码程序对这两个文本进行操作(十六进制值一摸一样),
但是得到的结果却不相同,一个能正确的转,另一个不能,结果是乱码。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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