如上,我在打开网页源码时,发现有很多都是这类形式的
&#开始的编码,
1.格之类的是什么编码形式?是union形式吗?
2.如何转换。
当然从union格式转换成utf8格式我还是了解的的,从utf8格式转换成gb2312则也是有认识的。
问题是像这类以&#之类是啥意思?从网上搜索到php的一个转换代码。<?php
$str = "TTL全天候自动聚焦";
$str = preg_replace("|&#([0-9]{1,5});|", "\".u2utf82gb(\\1).\"", $str);
$str = "\$str=\"$str\";";
eval($str);
echo $str;
function u2utf82gb($c){
$str="";
if ($c < 0x80) {
$str.=$c;
} else if ($c < 0x800) {
$str.=chr(0xC0 | $c>>6);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c < 0x10000) {
$str.=chr(0xE0 | $c>>12);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c < 0x200000) {
$str.=chr(0xF0 | $c>>18);
$str.=chr(0x80 | $c>>12 & 0x3F);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
}
return iconv('UTF-8', 'GB2312', $str);
}
?>
由于对php有点不熟,其中函数u2utf82gb就是从union到utf8到gb2312,那么,replace是把天节些出来,
其中这些数值是表示十进制的union吗?求证中。
&#开始的编码,
1.格之类的是什么编码形式?是union形式吗?
2.如何转换。
当然从union格式转换成utf8格式我还是了解的的,从utf8格式转换成gb2312则也是有认识的。
问题是像这类以&#之类是啥意思?从网上搜索到php的一个转换代码。<?php
$str = "TTL全天候自动聚焦";
$str = preg_replace("|&#([0-9]{1,5});|", "\".u2utf82gb(\\1).\"", $str);
$str = "\$str=\"$str\";";
eval($str);
echo $str;
function u2utf82gb($c){
$str="";
if ($c < 0x80) {
$str.=$c;
} else if ($c < 0x800) {
$str.=chr(0xC0 | $c>>6);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c < 0x10000) {
$str.=chr(0xE0 | $c>>12);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c < 0x200000) {
$str.=chr(0xF0 | $c>>18);
$str.=chr(0x80 | $c>>12 & 0x3F);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
}
return iconv('UTF-8', 'GB2312', $str);
}
?>
由于对php有点不熟,其中函数u2utf82gb就是从union到utf8到gb2312,那么,replace是把天节些出来,
其中这些数值是表示十进制的union吗?求证中。
解决方案 »
- indy Connection reset by peer如何最终解决
- ERP报表难题
- 控制Excel的问题,解决马上给分!
- 超级难题在Dbgrid 中选择多行记录?
- 高分悬赏(关于ComboBox组件)
- 下面的有什么问题,帮帮忙,救命呀
- olecontainer问题,高手请指点
- 请问如何在ms agent说的话中加如按钮,好象word的大眼虾一样
- 请问一下,怎么样判断listview的内容是否发生变化?在线等待!!
- 开发WEB服务嚣时,调用了DELPHI的ActiveFrom。当移动一下工具条时,DELPHI的ActiveFrom一片混乱。
- 免安装的程序如何连接远程的数据库
- 如何截其他控制的事件?
以&#起始的的确是unicode编码,每个&#间隔开的都是一个unicode字符。
在delphi中,需要和php一样,提取&#的每个数字, 由于这个数字就是unicode的
十进制表达,所以只需要把unicode转换成string即可。
在delphi中实现这种转换非常简单。做了一个测试如下如下:var
ichr :integer;
swchar :widestring;
begin
ichr := strtoint(edit1.text);
swchar := widechar(ichr);
Edit1.Text := WideCharToString(pwidechar(swchar));//widechar(ichr));
end;其中把20840放在edit1中,出来就是‘全’。
问题是要把类似的"TTL全天候自动聚焦";
一个串提取出unicode,则是个麻烦活。