推荐5 至25字符,10个字符或4一个汉字算几个字符

数据库中的汉字是几个字符
[问题点数:20分,结帖人zgpinguo]
数据库中的汉字是几个字符
[问题点数:20分,结帖人zgpinguo]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2011年12月 总版技术专家分月排行榜第三2011年9月 总版技术专家分月排行榜第三
2011年6月 MS-SQL Server大版内专家分月排行榜第一
2011年12月 总版技术专家分月排行榜第三2011年9月 总版技术专家分月排行榜第三
2011年6月 MS-SQL Server大版内专家分月排行榜第一
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
本帖子已过去太久远了,不再提供回复功能。2008年12月
日一二三四五六301234567891011121314151617181921222326272829303112345678910
邮箱:zhenandaci&#
留言簿(58)
阅读排行榜
评论排行榜&编程中有时候需要用到匹配中文的正则,一般用 [ \u4e00-\u9fa5]+ 即可搞定。不过这正则对一般的火星文鸟语就不太适用了,甚至全角的标点符号都不包含在内。例如游戏里面的玩家名,普通青年一般都是汉字,文艺青年会加几个特殊字符,2B青年火星文鸟语都会用上;这时候你就需要更强大的正则了。&&&&&&& 其实,游戏内大部分的玩家名都取自:中日韩统一表意文字(CJK Unified Ideographs),外加一些特殊的字符;用 [ \u2E80-\uFE4F]+基本都涵盖了 。根据Unicode5.0整理如下:1)标准CJK文字http://www.unicode.org/Public/UNIDATA/Unihan.html2)全角ASCII、全角中英文标点、半宽片假名、半宽平假名、半宽韩文字母:FF00-FFEFhttp://www.unicode.org/charts/PDF/UFF00.pdf3)CJK部首补充:2E80-2EFFhttp://www.unicode.org/charts/PDF/U2E80.pdf4)CJK标点符号:Fhttp://www.unicode.org/charts/PDF/U3000.pdf5)CJK笔划:31C0-31EFhttp://www.unicode.org/charts/PDF/U31C0.pdf6)康熙部首:2F00-2FDFhttp://www.unicode.org/charts/PDF/U2F00.pdf7)汉字结构描述字符:2FF0-2FFFhttp://www.unicode.org/charts/PDF/U2FF0.pdf8)注音符号:Fhttp://www.unicode.org/charts/PDF/U3100.pdf9)注音符号(闽南语、客家语扩展):31A0-31BFhttp://www.unicode.org/charts/PDF/U31A0.pdf10)日文平假名:Fhttp://www.unicode.org/charts/PDF/U3040.pdf11)日文片假名:30A0-30FFhttp://www.unicode.org/charts/PDF/U30A0.pdf12)日文片假名拼音扩展:31F0-31FFhttp://www.unicode.org/charts/PDF/U31F0.pdf13)韩文拼音:AC00-D7AFhttp://www.unicode.org/charts/PDF/UAC00.pdf14)韩文字母:1100-11FFhttp://www.unicode.org/charts/PDF/U1100.pdf15)韩文兼容字母:Fhttp://www.unicode.org/charts/PDF/U3130.pdf16)太玄经符号:1D300-1D35Fhttp://www.unicode.org/charts/PDF/U1D300.pdf17)易经六十四卦象:4DC0-4DFFhttp://www.unicode.org/charts/PDF/U4DC0.pdf18)彝文音节:A000-A48Fhttp://www.unicode.org/charts/PDF/UA000.pdf19)彝文部首:A490-A4CFhttp://www.unicode.org/charts/PDF/UA490.pdf20)盲文符号:2800-28FFhttp://www.unicode.org/charts/PDF/U2800.pdf21)CJK字母及月份:3200-32FFhttp://www.unicode.org/charts/PDF/U3200.pdf22)CJK特殊符号(日期合并):3300-33FFhttp://www.unicode.org/charts/PDF/U3300.pdf23)装饰符号(非CJK专用):2700-27BFhttp://www.unicode.org/charts/PDF/U2700.pdf24)杂项符号(非CJK专用):2600-26FFhttp://www.unicode.org/charts/PDF/U2600.pdf25)中文竖排标点:FE10-FE1Fhttp://www.unicode.org/charts/PDF/UFE10.pdf26)CJK兼容符号(竖排变体、下划线、顿号):FE30-FE4Fhttp://www.unicode.org/charts/PDF/UFE30.pdf/sosoft/p/3456631.html
Unicode汉字和英文编码范围_百度文库&评分:4/5&7页 Unicode汉字和英文编码范围_IT/计算机_专业资料。参考Unicode 汉字和英文编码范围...//unicode.org/charts/PDF/U3200.pdf 21)CJK 特殊符号(日期合并):3300-...字符集和字符编码(Charset & Encoding) - 吴秦 - 博客园Unicode中关于中文和其他特殊字符的编码范围 - wide288的专栏 - ...例如游戏里面的玩家名,普通青年一般都是汉字,文艺青年会加几个特殊字符,2B青年...主题推荐 unicode 编码 正则 扩展 游戏 猜你在找 查看评论 * 以上用户言论只...字符编码笔记:ASCII,Unicode和UTF-8 - 阮一峰的络日志各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解 - ...[转]Unicode中关于中文和其他特殊字符的编码范围 - Scan. - 博客园[转]Unicode中关于中文和其他特殊字符的编码范围 原文:,一般用 [ \u4e00-\u9fa5]...字符编码、unicode、代码页、矢量字体及多国语开发_修海_新浪博客 0、字符编码发展概述 1、国标码 2、内码介绍 3、Unicode码介绍 4、Codepage... 01-09区为特殊全角符号共682个 16-55区为一级汉字共3755个,按音序排列 56...常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、UTF-8、unicode GBK编码是GB2312编码的超集,向下完全兼容GB2312,同时GBK收录了Unicode基本多...40的ASCII符号做一些特殊符号,这样就可以快速定位,且不用担心是某个汉字的另...字符编码(Unicode UTF-16 UTF-8 ANSI)学习总结-xychwe - 3S博客平面0的0xD800-0xDFFF,共2048个码位,是一个被称作代理区(Surrogate)的特殊...平面2和平面14上,它们对应着Unicode目前定义的99089个字符,其中包括71226个汉字。...CSS 中文字体 Unicode 编码表 - 前端开发仓库在CSS 中设置字体名称,直接写中文是可以的。但是在文件编码(GB2312、UTF-8 等)不匹配时会产生乱码的错误。 为此,在 CSS 直接使用 Unicode 编码来写字体名称可以...(精)字符集GBK和UTF8的区别说明-coler-ITPUB博客ASCII码是7位编码,编码范围是0x00-0x7F。ASCII字符...同时GBK收录了Unicode基本多文种平面中的所有CJK汉字...低字节是0x40-0x7E的GBK字符有一定特殊性,因为这些...python编码处理:unicode字节串转成中文 各种字符串举例说明 - 杨...各种字符编码详解(ascii,utf-8,unicode,gbk,gb2312,iso8859..._小站令人欣慰的是,Unicode随即问世了。 2.iso8859-1 属于单字节编码,最多能表示的... 很 明显,iso8859-1编码表示的字符范围很窄,无法表示中文字符。但是,由于是单...请大家给我推荐下关于Unicode,GB,S-JIS等字符编码方面的书5条回复&-&发帖时间:&日HTML 字符集9 的数字,大写和小写英文字母表,以及一些特殊字符。... 可变字符编码,能够对全部 Unicode 指令表进行编码。...W3School 简体中文版的所有内容仅供测试,对任何法律...字符编码的奥秘 - 天空 - BlogJava10条评论&-&发文时间:&日VB的Unicode编码与中文处理--《中国金融电脑》2001年09期Unicode编码 字符串处理 应用程序 文本文件 中文字符 操作字符 字符串转换 数据库 交通银行郑州分行 当前高度深入分析 Java 中的中文编码问题unicode_百度百科[1] 中文名 统一码 外文名 Unicode 也称 万国码 解释 一种计算机字符编码...平面0的0xD800-0xDFFF,共2048个码位,是一个被称作代理区(Surrogate)的特殊...unicode编码与ansi编码【转】 - 第1页 - workman's Blog - EDN ...unicode和ansi都是字符代码的一种表示形式。 为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中......字符集,也没有说明它要怎么编码。 本文档描述了一种Unicode的... UTF-7把Unicode字符编码为US-ASCII的字节,并且用...和10个数字0-9,和后面的9个特殊字符(注意:&+&... 例如:Unicode序列 用汉语表示日文 &nihongo& (...unicode编码表_症状库_飞华健康1 unicode编码表Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符, 比如汉字... 的ASCII编码是0x61,十进制也是97, 对于汉字的编码,事实上Unicode对汉字支...JAVA字符集,linux下中文问题这是java字符串处理的一个标准函数,其作用是将字符串所表示的字符按照charset编码,并以字节方式表示。注意字符串在java内存中总是按unicode编码存储的。比如&中文&,...Unicode字符列表_百度百科 中文名 Unicode字符列表 外文名 Unicode horizontal tabulation character 类型 ...目录 1代码显示与描述 2拉丁字母 3彝文字母 4特殊 5Unicode 编码表...汉字编码对照表(gb2312/unicode/utf8)汉字编码对照表(gb2312/unicode/utf8) 【转帖】 一、汉字编码的种类 汉字编码中现在主要用到的有三类,包括GBK,GB2312和Big5。 1、GB2312又称国标码,由国家标准...百度百科的utf-8词条UTF-8、GB2312、GB18030、GBK和BIG5等字符集编码范围的具体说明作用:它解决了中文、日文、朝鲜语等的编码,兼容GBK...UNICODE字符集 作用:为世界650种语言进行统一编码,...等中有特殊意义,故很多情况下需要UTF-8编码保存文本...C/C++对Unicode编码的处理-zhpacer-ChinaUnix博客实际上目前版本的Unicode尚未填充满这16位编码,保留了大量空间作为特殊使用或将来...也就是转换 ASCII是8位范围内的字符集,对于范围之外的字符如汉字它是无法表达...字符集_百度百科字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode... 各区包含的字符如下:01-09区为特殊符号;16-55区为一级汉字,按拼音排序;56-...中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030 - ..._博客园 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030 转自: :UTF-8的一个特别...[ZZ]Unicode字符编码规范 实例详细介绍各种字符集..._ChinaUnix博客 中文、日文及朝鲜语 GB18030 MBCS 多字节 各国语言 UNICODE,UCS DBCS 宽字节 2. 如何判断字符集 2.1字节序 首先说一下字节序对编码的影响,字节序分为Big ...浅谈文字编码和Unicode(上) - fmddlmyy的专栏 - 博客频道 - CSDN...Unicode字符编码标准 - barenx的专栏 - 博客频道 - CSDN连字号、标点符号和数学符号,对于中文,也可以是汉字...Unicode标准定义了一个字符集和几种编码。 Unicode最...特殊字符调整(specific character adjustments) 特殊的...UTF-8和GBK等中文字符编码格式介绍及相互转换 - lizhenghn - 推酷
UTF-8和GBK等中文字符编码格式介绍及相互转换 - lizhenghn
& & & 我们有很多时候需要使用中文编码格式,比如gbk、gb2312等,但是因为主要针对中文编码设置,因此并不完全通用,这样一来就有了在各编码间相互转换的需求,比如和UTF8的转换。可是在我使用的过程中,却发现编码转换并没有想象中的简单,或者说可能会出错,即使你使用的系统API。我在使用中,产生一些疑惑,搜索资料也没有完全解决我的问题,因此整理了这篇文章。文章末尾列出了我参考的一些资料或者代码实现等,在此谢过。
& & & 本文先各个中文编码进行介绍,只做简单介绍,不涉及详细原理(本文结尾附有链接可参阅),然后实例验证编码转换之间的问题。
各个编码格式介绍
& & & GB2312是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》,由国家标准总局发布,日实施,通行于大陆。新加坡等地也使用此编码。GB2312收录简化汉字及符号、字母、日文假名等共7445个图形字符,其中汉字占6763个。GB2312 规定“对任意一个图形字符
都采用两个字节表示,每个字节均采用七位编码表示
”,习惯上称第一个字节为“高字节”,第二个字节为“低字节”。
& & & GB2312的编码范围为EH,与ASCII有重叠,通行方法是将GB码两个字节的最高位置1以示区别。
GB2312 仅收汉字 6763 个
,这大大少于现有汉字,随着时间推移及汉字文化的不断延伸推广,有些原来很少用的字,现在变成了常用字,例如:朱镕基的“镕”字,未收入 GB2312-80,现在报业出刊只得使用(金+容)、(金容)、(左金右容)等来表示,形式不一而同,这使得表示、存储、输入、处理都非常不方便,而且这种表示没有统一标准。为了解决这些问题,以及配合UNICODE的实施,全国信息技术化技术委员会于日《汉字内码扩展规范》。GBK向下与GB2312 完全兼容,向上支持ISO 10646 国际标准,在前者向后者过渡过程中起到的承上启下的作用。
GBK亦采用双字节表示,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1,总体编码范围为8140-FEFE之间,首字节在81-FE 之间,尾字节在40-FE 之间,剔除 XX7F 一条线
GBK 共收入21886个汉字和图形符号,包括:
& & * GB2312中的全部汉字、非汉字符号;
& & * BIG5中的全部汉字;
& & *&与ISO 10646相应的国家标准GB13000中的其它 CJK 汉字,以上合计20902个汉字;
& & *&其它汉字、部首、符号,共计984个;
& & & GB18030 是最新的汉字编码字符集的国家标准,向下兼容 GBK 和 GB2312 标准。
GB18030 编码是一二四字节变长编码
。一字节部分从 0x0~0x7F 与 ASCII 编码兼容。二字节部分,首字节从 0x81~0xFE,尾字节从 0x40~0x7E以及 0x80~0xFE,与GBK标准基本兼容。四字节部分,第一字节从 0x81~0xFE,第二字节从 0x30~0x39,第三和第四字节的范围和前两个字节分别相同。四字节部分覆盖了从 0x0080 开始, 除去二字节部分已经覆盖的所有 Unicode 3.1码位。也就是说,GB18030编码在码位空间上做到了与Unicode标准一一对应,这一点与UTF-8编码类似。
& & & Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符。
Unicode只是一个符号集, 它只规定了符号的二进制代码, 却没有规定这个二进制代码应该如何存储
。比如UTF-8、UTF-16、UTF-32都是Unicode编码的实现方式,不过UTF-8是使用最多的实现。
& & & UTF-8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,是在互联网上使用最广的一种unicode的实现方式。
UTF-8最大的一个特点,就是它是一种变长的编码方式
。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,因此可以节省存储空间。
它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码
。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
& & &UTF-8的编码规则很简单,只有二条:
& & & & & & 1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的;
& & & & & & 2)对于n字节的符号(n&1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的二进制位,全部为这个符号的unicode码;
& & & 另外像ASCII只用于英文字符编码,BIG5编码是通行于台湾、香港地区的一个繁体字编码方案,虽然存在一些瑕疵,但广泛应用于电脑行业,尤其是互联网中,从而成为一种事实上的行业标准。
ASCII用于表示英文字符,是用7位表示的,能表示128个字符;其扩展使用8位表示,表示256个字符;
GB2312简体中文的编码格式, 只支持6763个常用汉字;
GBK是GB2312基础上扩容后兼容GB2312的标准,包含全部中文字符,支持简体中文及繁体中文;
GBK通用性比UTF8差,不过UTF8占用的数据库比GBK大;
GB2312、GBK到GB18030都属于双字节字符集 (DBCS);
从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的
,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0;
GBK和UTF-8的相互转换
& & & 好吧,这才是正题。
& & & 从上面看到,一般来说UTF-8可应用于大多数场景,尤其是互联网上,而中文编码主要使用GBK编码,因此这就有了GBK、GB2312和UTF-8的相互转换需求。但要注意,
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换
GBK、GB2312 ---& Unicode ---& UTF-8
UTF8 ---& Unicode ---& GBK、GB2312
& & &比如拿汉字的“字”来举例,
&“字“的表示
二进制表示
字符串表示
& & & 同样,对于词语“中国.北京”,转换成UTF-8表示为:涓?浗.鍖椾含。
& & & 你要问我怎么转换的?原理什么的就不介绍了,在Windo平台下,通过一些Win API可以将GBK和Utf-8经过Unicode层进行相互转换。Linux下也是这样。另外由于各个编码规则都是确定的,因此各字符也就有了一种对应关系,这就是查表法也成为实现编码转换的一种方式。
GBK和UTF-8编码的检测
& & &上面简单介绍了各种编码以及他们的相互转换,但如果一串字符串,能够检测出其编码是什么吗? 比如对于“中国.北京”,检测出其为GBK或GB2312,而对于
”涓?浗.鍖椾含“检测出其为UTF-8。那么对于一种确定的检测算法,是否保证肯定能检测到该字符串的真正编码方式吗?或者对于一个网页内容来说,很可能既存在GBK编码内容,也有UTF-8内容,那网页应该怎么显示(好像是检测编码,哪种编码出现的频率多,就使用哪种编码显示,臆测,不懂)?
& & &再举一个例子: “谢谢”,其UTF-8表示是“璋㈣阿”。从我的实现中,不论对于GBK编码的“谢谢”,还是UTF-8的“璋㈣阿”,都
检测出是UTF-8编码
。而我也不是第一个遇到这种情况的人,比如
他老人家也遇到过检测失败的问题,不过他是在Ruby语言下发现的问题,而我是在C/C++实现中出现的检测失败。
& & &好吧,说到这里我也不知道说的是什么了,总之就是,
各编码规则从应用角度来看,还挺复杂;
编码转换和编码检测有时也不靠谱;
附上我的测试代码,请高手指点我的实现是否有问题,谢谢!
1 void GetText(bool isUtf8, std::vector&std::string&& vecStr)
const char* filename = isUtf8 ? &utf8.txt& : &gbk.txt&;
std::ifstream ifs(filename);
assert(!ifs.fail());
while(!ifs.eof())
std::string
vecStr.push_back(str);
ifs.close();
17 int main()
std::vector&std::string& uVecS
std::vector&std::string& gVecS
GetText(true,uVecStr);
GetText(false,gVecStr);
std::cout&&&--------------utf8---&gbk----------------\n&;
for (std::vector&std::string&::iterator itr = uVecStr.begin();itr!=uVecStr.end();++itr)
std::cout&&*itr&&&\t&&&ConvertUtf8ToGBK(*itr)&&&\t&&&IsTextUTF8((*itr).c_str(),(*itr).size())&&&\t&&&IsTextUTF8(*itr)&&&\n&;
std::cout&&&--------------gbk---&utf8----------------\n&;
for (std::vector&std::string&::iterator itr = gVecStr.begin();itr!=gVecStr.end();++itr)
std::cout&&*itr&&&\t&&&ConvertGBKToUtf8(*itr)&&&\t&&&IsTextUTF8((*itr).c_str(),(*itr).size())&&&\t&&&IsTextUTF8(*itr)&&&\n&;
上面测试代码是分别从两个文本文件中读取相同内容,一个文件内容是UTF-8字符串,然后转换为GBK编码,并检测源字符串编码方式;而另一个文件内容是GBK编码,然后转换为UTF-8编码,并检测源字符串编码方式。文件内容如下:
输出内容如下:
--------------utf8---&gbk----------------
涓?浗.鍖椾含
--------------gbk---&utf8----------------
涓?浗.鍖椾含
本文所用所有代码下载:
GBKtoUTF8.zip,
且也已共享在github:
本文所参考文章:
(UTF-8编码检测失败)
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见}

我要回帖

更多关于 一个汉字几个字符 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信