ANSI和UTF-8文本编码的体积比较

王志勇 发表于 2007年01月17日 12:15

语言设置指的是<meta>这里的charset,如简体中文是charset=gb2312,UTF-8是charset=utf-8;文本编码指的是文件的储存格式,我们新建的文本文件默认都是ANSI格式,所以不能含有如©、®这类字符。为了不让网页出现乱码,语言设置和文本编码应该相对应,简体中文的文本编码格式是gb2312,UTF-8文本编码格式是UTF-8。语言设置和文本编码对于任何客户端网页都适用,如.htm、.asp、.php、.jsp、.aspx的网页。

ANSI和UTF-8文本编码的体积,我这里做了一些实验,同一个字符重复N次,均去掉了Unicode签名(BOM),如下表:

字符编码格式重复次数文件体积
英文、半角字符:
aANSI100次100 bytes
AANSI100次100 bytes
aUTF-8100次100 bytes
aUTF-81000次1000 bytes
aUTF-810000次10000 bytes
汉字、全角字符:
ANSI100次200 bytes
ANSI100次200 bytes
UTF-8100次300 bytes
®UTF-8100次200 bytes
UTF-8100次300 bytes
UTF-81000次3000 bytes
UTF-810000次30000 bytes
Unicode编码格式:
aUnicode100次200 bytes
Unicode100次200 bytes
®Unicode100次200 bytes
Unicode100次200 bytes
Unicode1000次2000 bytes

总结:(以下的byte就是字节)

1、半角的字符,如英文、数字、半角符号,ANSI和UTF-8文本编码的体积比是1:1,UTF-8格式会多出3个byte。
2、中文字符,ANSI和UTF-8文件的体积比是1:2,UTF-8格式多出3个byte。
3、©、®这2个字符,在UTF-8格式下,与中文字符的体积一样。
4、韩文字符不能使用ANSI格式。韩文在UTF-8格式下,一个字符占用3个byte;韩文在Unicode格式下,一个字符占用2个byte;
5、Unicode码则比较折中,所有字符都占用2个byte。

总之,英文、数字、半角符号,在ANSI和UTF-8编码格式下都占用1个byte;中文,全角标点,在ANSI下占用2个byte,在UTF-8下占用3个byte。

8条评论:
1   自由勇 2007-01-17 16:15
Trackback来自 《要不要使用UTF-8编码?

本Blog开通了近5个月,网页一直使用gb2312语言、文本使用标准ANSI编码。中文Blog在2005年、2006年这两年,呈现出了极其壮观的场面,Blog在网络中,几乎可以最大程度地促进和改善一个人的理性思考能力。中文Blog,UTF-8语言编码占多数,我估计约占70%,gb2312语言编码约占30%。

2   游客 2007-04-04 10:48
自由勇在分析时有些错误,如果没猜错的话,以上测试均是使用 Windows 中的 记事本来完成的,错误在于每个 UTF-8 或 Unicode 体积都多出那三个或两个字节,因为记事本只能正常用于 Windows 中,且只能用来输入一些文本,别无他用,不能用来编程,当然,用来输入 HTML 是可以的,因为浏览器会忽略这个错误;


错误:
Windows 中的记事本是通过文本文件的前三个(UTF-8)或前两个(Unicode)字节来区分整个文本文件所使用的编码,且该机制不兼容任何其它文本编辑器,如果楼主会写程序的话就可以很容易看到记事本都是擅自加的哪几个字符;

楼主是做网页的,推荐楼主用 Dreamware 来测试正确的文本体积,使用记事本将得到错误的答案

3   自由勇 2007-04-04 10:53
回游客,你很细心,谢谢你提出的问题,但这并不是错误,我这里主要用EmEditor做测试。除了Dreamweaver的文本系统之外,有条件还可以用ASP、PHP、JSP分别测试一下写入的UTF-8、Unicode文本文件的体积。
4   kukukuan@163.com 2007-04-05 11:42
EmEditor存UTF8的时候会提示要不要加UNICODE签名,不加签名的话,会少3个

加UNICODE签名的做法在其他平台兼容性上有问题

5   自由勇 2009-02-08 08:41
Trackback来自 《 Unicode和UTF-8,GB2312

中文网站使用ANSI(GB2312)编码,是最理想的编码。

6   自由勇 2009-02-08 10:17
回4楼的朋友,我已经去掉了Unicode签名,文章更新了一下。
7   王江勇 2009-11-05 15:03
认识一下,我叫王江勇,只是觉得我们的名字有点象,所以给你留言了。
8   cjrcl 2010-07-13 11:17
2、中文字符,ANSI和UTF-8文件的体积比是2:3,UTF-8格式多出开头3个byte:EF BB BF(用Debug Dump出来一看便知)。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

直接发送Trackback到此文章

说明:本评论系统不支持HTML代码。(您的留言需要审核,审核规则请见这里。)

王志勇:程序设计者。
1980-09-26 (38周岁)

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏 | Arsue官方Blog

54.158.199.217 2018-09-23_23:45 | CCBot/2.0 (https://commoncrawl.org/faq/) ---
Time | Taimt | Caimt | ac315 | Arsue | IC Search | TDNote 帖笛 | HKANS | Vaimt Panel | txfor | 网树 | cdfor | 性格追踪仪 | Gratitude | IXNes | Tratom | Coumit | Serble | Aufirm | Aroat | Sail every day | Tuarm | Sail every day | Webshu | Sinvide | Aucist | Anydiary | Cersta | Tovate | Matnue | Urtal | Auciou | Auciou's column

Blog存档 Archives

2018年09月
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2018 auiou.com All rights reserved.
此Blog程序由王志勇编写 已经发布在Arsue