字符集探测
外观
![本页使用了标题或全文手工转换](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | 此条目需要精通或熟悉计算机科学的编者参与及协助编辑。 (2010年10月16日) |
字符编码探测、字符集探测又称为代码页检测是个启发式猜测代表文字的一系列字节的字符编码。其算法通常依据对字节样式的统计分析。这并不是一个万无一失的方法因为它依赖于统计数据——比如有些Windows版本会误把ASCII编码的"Bush hid the facts"当作中文UTF-16LE。
为数不多的能可靠探测的情况之一是探测UTF-8。这是因为UTF-8中有大量的无效字节序列,所以当其他编码方式使用字节中的高位bit时极不可能通过UTF-8有效性测试。不幸的是不完善的字符集探测程序不优先进行可靠的UTF-8测试于是把UTF-8定为其他编码。
其它的编码识别方式
[编辑]由于字符集探测的不可靠,所以通常是用属性标签去注明是用何种编码。[1]
- 在HTML的
<head></head>
区块里
例如在HTML文件中使用一个meta
element去标示出编码种类:
在HTML5使用
<meta charset="utf-8" />
相当于HTML4使用
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
也可以在HTTP传输文件时,在HTTP档头里使用Content-type通知给浏览器知道使用何种编码,以使浏览器能正确的显示出内容。[2]
- 在asp输出页面前使用
Response.Charset="utf-8"
相当于使用
Response.AddHeader "Content-Type", "text/html;charset=utf-8"
- 在JSP输出页面前使用
<%@ page contentType="text/html; charset=utf-8" %>
- 在PHP输出页面前使用
header('Content-type: text/html; charset=utf-8');
参考资料
[编辑]- ^ Declaring character encodings in HTML (页面存档备份,存于互联网档案馆) - W3C
- ^ Setting the HTTP charset parameter (页面存档备份,存于互联网档案馆) - W3C
相关
[编辑]- Unicode国际化组件 - A library that can perform charset detection.
外部链接
[编辑]- Frequency distributions of English trigraphs (页面存档备份,存于互联网档案馆)
- IMultiLanguage2::DetectInputCodepage
- API reference for ICU charset detection
- Mozilla Charset Detectors
- Java port of Mozilla Charset Detectors
|