MaoBisheng

Asp.Net(C#) & SQL & Oracle

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

     近日由于公司SAP系统三合一,先前由SAP Download下来的文本文档,用VB程序处理(对齐的文本文档,按字段固定位置切割存入DB中),出现读取中文字乱码问题。。。仔细一检查,发现原先的文本编码是ANSI,而新系统的文本编码是UTF-8,VB读取UTF-8文本的中文字符时出现乱码,手动将编码格式转换成ANSI格式后,发现文本没有对齐,与SAP那边的人联系后,可以在SAP系统里更改,Download下来的文本文档为ANSI格式,但是对齐的问题依旧没有得到解决,无奈之下,只好改程序了(SAP产生文档——各字段用“|”区分,VB按“|”分割字段)。。。。

 

以下是转载:

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

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

ANSI和UTF-8文本编码的体积,我这里做了一些实验,同一个字符重复N次,如下表:

#ve{background-color:FFFFFF;font-family:Verdana,Tahoma,Arial;font-size:11.5px}

字符 编码格式 重复次数 文件体积
英文、半角字符:
a ANSI 100次 100 bytes
A ANSI 100次 100 bytes
a UTF-8 100次 103 bytes
a UTF-8 1000次 1003 bytes
a UTF-8 10000次 10003 bytes
汉字、全角字符:
ANSI 100次 200 bytes
ANSI 100次 200 bytes
UTF-8 100次 303 bytes
® UTF-8 100次 203 bytes
UTF-8 100次 303 bytes
UTF-8 1000次 3003 bytes
UTF-8 10000次 30003 bytes
Unicode编码格式:
a Unicode 100次 202 bytes
Unicode 100次 202 bytes
® Unicode 100次 202 bytes
Unicode 100次 202 bytes
Unicode 1000次 2002 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。

posted on 2008-07-22 20:00  MaoBisheng  阅读(2899)  评论(0编辑  收藏  举报