网页UTF8转换GBK后出现问号"?"的原因
来源:互联网 发布:淘宝改库存有影响吗 编辑:程序博客网 时间:2024/06/09 19:00
网页UTF8转换GBK后出现问号"?"的原因
网页编码转换是进行网页解析和处理的第一步。
互联网上越来越多的网页采用UTF-8编码,UTF-8用1到6个字节编码UNICODE字符,收录了超过10万个字符,BMP部分也有六万多个字符
而在进行编码转换时,我们往往需要转换为GBK编码进行后续处理,很多网页在转换后,会发现出现大量连续的问号:????????
这些恶心的问号是在编码转换阶段引入的,原因是:
GBK字符集只收录了两万多个字符,比UTF-8的字符数量少得多。
转化到GBK编码的时候,就会有编码落到GBK字符集以外,不能转化成GBK编码。这部分字符在转换之后的字符串中都变成了’?’
UTF-8:采用变长字节 (1 ASCII, 2 希腊字母和排版字符, 3 汉字等多字节东亚语言, 4 平面符号和特殊符号等),
其中双字节字符中有一些没有在GBK字符集中,通常来说UTF-8无法识别的字符都是非常生僻的字符,几乎难以遇到,可不用考虑;但有一个字符非常特殊:C2A0
C2A0是UTF8里的排版用空格(区别于ASI =20的空格),这个特殊的字符(unicode序号为0xA0),不在GBK字符集中。却频繁用于xml/html等格式的文件中。大量UTF-编码的网页使用这个字符用作占位的空格。而且不同浏览器对它的处理方式不同:IE浏览器识别出该符号并以空格显示,firefox则替换为xml转义字符 当网页中用C2A0进行文字排版时,我们对网页进行编码转换为GBK时就会出现很多"?"问号
一个简便的方案为,在网页转码前,进行过滤:
if(code_type == "UTF8")
{
str = str.replace('C2A0', ' ');
}
- 网页UTF8转换GBK后出现问号"?"的原因
- 网页UTF8转换GBK后出现问号"?"的原因
- utf8转gbk出现问号的分析,浅谈perl对二进制的处理
- GBK-UTF8之间的转换
- 网页编码utf8 gb2312 gbk的区别
- php的汉字转换: GBK->Unicode(UTF8)
- php的汉字转换: Unicode(UTF8)->GBK
- UTF8到GBK的相互转换
- VC GBK与UTF8字符串的转换
- utf8与gbk字符编码的转换
- 字符集GBK到UTF8的转换
- UTF8与GBK间的转换
- GBK和UTF8之间的转换 开源
- Qt 中GBK和UTF8的转换
- GBK UTF8 编码转换
- gbk转换到utf8
- GBK数据库转换UTF8
- java gbk utf8转换
- MySQL学习之路(一):学习资料和学习环境
- 读《精通正则表达式》:优先选择最左端的匹配结果
- adfwwwwerqqrqr
- FTP协议的分析和扩展
- 字符编码
- 网页UTF8转换GBK后出现问号"?"的原因
- setup_memory
- request对象和session对象
- php 字符编码转换
- linux下的netlink编程
- ASP中数据库调用中常见错误的现象和解决
- 在WinCE 6.0系统下实现USB功能定制
- c#内存管理
- ASP+Access的安全隐患及对策