首页 » 建站技术 » 浏览内容

html实体与网页编码


2005-12-20 19:25:23 5,994 0 发表评论 字体: 作者:C.K.

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

From:http://www.ugia.cn/?p=72

     最近在解析一个天气预报的xml文件时,发现它里面所有的汉字都转化为了html实体(十进制表示的Unicode编码),这样做的好处就是不管网页的编码是什么,都可以正常的显示汉字,而不会出现乱码,当然也适用于其他字符集。在php中我们可以用mbstring的mb_convert_encoding函数实现这个正向及反向的转化。
如:

mb_convert_encoding (“你好”, “HTML-ENTITIES”, “gb2312”); //输出:&# 20320;&# 22909;
mb_convert_encoding (“&# 20320;&# 22909;”, “gb2312”, “HTML-ENTITIES”); //输出:你好

可以查看这个页面:htmlentities.html, 不管选择什么网页编码,网页都能正常显示。

如果需要对整个页面转化,则只需要在php文件的头部加上这三行代码:

mb_internal_encoding(“gb2312”); // 这里的gb2312是你网站原来的编码
mb_http_output(“HTML-ENTITIES”);
ob_start('mb_output_handler');

如果没有打开mbstring扩展,可以参考coolcode.cn上的这两篇文章:

在任意字符集下正常显示网页的方法

在任意字符集下正常显示网页的方法(续)

在asp中我们可以用下面这个函数来实现这个转化:

Function htmlentities(str)
For i = 1 to Len(str)
char = mid(str, i, 1)
If Ascw(char) > 128 then
htmlentities = htmlentities & “&#” & Ascw(char) & “;”
Else
htmlentities = htmlentities & char
End if
Next
End Function

Coldfusion版本的:

function nochaoscode(str)
{
var new_str = “”;
for(i=1; i lte len(str);i=i+1){
if(asc(mid(str,i,1)) lt 128){
new_str = new_str & mid(str,i,1);
}else{
new_str = new_str & “&##” & asc(mid(str,i,1));
}
}
return new_str;
}

实体引用与字符引用

纠正这篇文章《html实体与网页编码》里的一个概念性错误,在这篇文章里我所要转化成的其实是十进制的字符引用。
所谓实体引用就是引用已命名的实体,如:& nbsp; & copy;等。xhtml中有大量的已命名实体,如http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset3.asp?frame=true所列出的。xml中可以在dtd中自己定义。
字符引用使用十六进制或十进制Unicode值来引用特定字符,而不使用名称。字符引用每次引用一个字符。例如:&# xA0;是一个十六进制字符引用,引用空格字符。&# 160;是一个十进制字符引用,引用空格字符。

网站统计 Statistics

  • 创建时间: 2005年1月3日 距今5064 天
  • 日志总数: 2461
  • 评论总数: 630
  • 标签总数: 654
  • 链接总数: 273
  • 最后更新: 2018-8-31 17:57:04
  • 您是本站第 14156493 位访客

广告区 Guǎng Gào