UTF8和Unicode各自的利弊是什么(在线等待)

qhgary 2003-07-27 10:41:02
常听到这两个东东,程序中也有的时候用UTF8有的时候用Unicode。
我的理解:2种不同的编码方式
想知道:各自有什么特点,利弊各是什么,怎么取舍。目前那种用的多,为什么会这样。谢谢
...全文
303 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
大健 2003-07-30
  • 打赏
  • 举报
回复
Unicode 编码方式却有多种,最常见的是UTF-8、UTF-16、UTF-32。一般我们所指的UNICODE就是UTF-16。
UTF8与UTF16两者各有优点。
UTF16是固长两字节。因为固定长度,所以性能上要比非定长的UTF8高。
UTF8是非固长,最长为四个字节。大多数西欧语言的每个字符所需的字节少于两个。日语、朝鲜语和中文的每个字符通常需要三个字节。与UTF-16相比,在 UTF-8 中,只有亚洲文字的编码开销会比较大。

更多关于UNICODE的信息,可查看www.unicode.org

http://developers.sun.com/dev/gadc/technicalpublications/articles/utf8.html
看看这篇文章,UTF8的重要性,里面说得很清楚了。
这里是我收集到的一些关于字符编码的资料,或许对你有用:http://61.145.120.8/kin/AbourCharSet/
chenhigh 2003-07-30
  • 打赏
  • 举报
回复
gz
cscer 2003-07-30
  • 打赏
  • 举报
回复
感谢!感谢!

受益匪浅!
AhBian 2003-07-30
  • 打赏
  • 举报
回复
事实就是如此。

因为在网络上大多是混合型文字的数据。UTF-8 存储 ANSI 字符时还是只用一个字节。
譬如 XML 文件缺省的字符集也是 utf-8。

然而.net 中的 String 类型均是 UNICODE,而源代码文件在保存是采用 UTF-8 格式。
源代码文件保存为 UTF-8 格式,是因为代码文件中一般 ANSI 字符居多。

UTF-8 采用 1 到 4 字节的可变长度来表示字符,对越常用的字符就采用越短的长度来表示。

UNICODE 在使用 SURROGATE 时,也会达到 4 字节。但这种情况比较少见。
烤火的鱼 2003-07-30
  • 打赏
  • 举报
回复
听君一席语,胜读30天书。
AhBian 2003-07-30
  • 打赏
  • 举报
回复
大件的资源真不错啊。
qhgary 2003-07-29
  • 打赏
  • 举报
回复
to AhBian(阿扁)
既然unicode都是2字节,UTF-8可能会用到3个甚至4个字节来存储一个字符,反而UTF-8在网络上受到的支持较好?按照常规应该是越规则越容易传输解析的啊。

vs.net既然内部处理用的是unicode,为什么在存储的时候缺省是UTF-8呢? 看上去没有道理啊。
lg384 2003-07-28
  • 打赏
  • 举报
回复
up
AhBian 2003-07-28
  • 打赏
  • 举报
回复
如果大量使用 ANSI 文字,那么用 UNICODE 浪费存储空间,UTF-8 较节约。
如果大量使用东亚文字等文字,那么用 UNICODE 反而较节约,UTF-8 较浪费。

因为 UNICODE (基本上)总是用 2 字节记录一个字符,而 UTF-8 可能会用到 3 或者 4 个字节来存储一个字符。

UTF-8 在网络上受到的支持较好。而 UNICODE 则相对要差一些,但现在也已逐渐改变。

VS.NET 在内部处理时使用 UNICODE,在储存时缺省使用 UTF-8。
qhgary 2003-07-27
  • 打赏
  • 举报
回复
上面主要是定义,那关于优缺点以及适用场合呢? 谢谢
panyee 2003-07-27
  • 打赏
  • 举报
回复
ANSI:系统预设的标准文字储存格式。ANSI是American National Standards Institute的缩写。它成立于1918年,是一个自愿性的组织,拥有超过1300个会员,包括所有大型的电脑公司。ANSI专为电脑工业建立标准,它是世界上相当重要的标准。
  Unicode:世界上所有主要指令文件的联集,包括商业和个人电脑所使用的公用字集。当采用Unicode格式储存文件时,可使用Unicode控制字符辅助说明语言的文字覆盖范围,如阿拉伯语、希伯来语。用户在“记事本”中输入含有Unicode字符的文字并储存文件时,系统会提示你必须选取“另存为”中的Unicode编码,这些字符才不会被遗失。需要提醒大家的是,部分Windows 2000字型无法显示所有的Unicode字符。如果发现文件中缺少了某些字符,只需将其变更为其它字型即可。
  Unicode big endian:在Big-endian处理器(如苹果Macintosh电脑)上建立的Unicode文件中的文字位元组(存放单位)排列顺序,与在Intel处理器上建立的文件的文字位元组排列顺序相反。最重要的位元组拥有最低的地址,且会先储存文字中较大的一端。为使这类电脑的用户能够存取你的文件,可选择Unicode big-endian格式。
  UTF-8:UTF意为通用字集转换格式(Universal Character Set Transformation Format),UTF-8是Unicode的8位元格式。如果使用只能在同类位元组内支持8个位元的重要资料一类的旧式传输媒体,可选择UTF-8格式。
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2003-07-27 10:41
社区公告

让您成为最强悍的C#开发者