请问唠叨老大,关于使用您写的gb2utf8函数:)

countstars 2004-11-18 10:14:47
用了您的转换表,可是有些字转不过来,导致xml报错"无效字符",请问有没有解决的方法?比如一些繁体字,还有生僻字比如“孖”这个字。请指点一下,服务器不支持iconv,好像支持iconv碰到这种也会出错,导致页面显示混乱,不知道怎么处理?谢谢。
...全文
305 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2004-11-20
不是,需分别转换。
回复
countstars 2004-11-20
我想不是这样的,因为,要转的不一定是一个字符集,如果不是xml,只要浏览器支持,就可以正常显示比如日文韩文等不规则文字,也就是说,如果要转为xml文件,是不是得把所有字符集都合并在一起然后再转为utf-8?我是这个意思。
回复
abaowu 2004-11-19
mark:
回复
xuzuning 2004-11-19
你是指www.phpx.com上的那个函数吧?(www.dev-club.com上的也一样)请注意grow-easy提供的是gb2312-utf8对照表,而非gbk-utf8对照表。若用于在gd输出汉字是足够了,但用于xml是不够的。
你可以由gbk编码标准重新构造该对照表

在使用iconv函数时要注意源串编码的类型
<?php
$ch = "喆";
echo bin2hex(iconv("GB2312","UTF-8",$ch)); //空,喆不在gb2312编码中
echo "<br>";
echo bin2hex(iconv("GBK","UTF-8",$ch)); //e59686
?>
回复
xuzuning 2004-11-19
其实这是很简单的
首先找一个gbk标准字符集,最好是这样的“丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱....
当然十六进制表示的也可以,用pack函数转换一下就可以了。例
echo pack("H4","8140"); //丂

然后用iconv函数逐字取得其utf-8编码,在自己的机器上让iconv函数不会是难事吧?!

将结果按如下格式保存到文件(我的那个函数用到的格式)
汉字utf-8值换行
$hz = '丂';
$utf8 = iconv("GBK","UTF-8");
$line = $hz.$utf8."\n";

这里给一个936代码页的显示程序
<?php
header("Content-Type: text/html; charset=gb2312");
echo "<title>936 代码页</title>";
$i = $_GET['i'];
if($i<129)
$i = 129;
if($i>254)
$i = 254;
if($i != 129) {
echo "<a href='?i=129'>首页</a>\n";
echo "<a href='?i=".($i-1)."'>上页</a>\n";
}
if($i != 254) {
echo "<a href='?i=".($i+1)."'>下页</a>\n";
echo "<a href='?i=254'>尾页</a>\n";
}
echo "<table border CELLPADDING='1' CELLSPACING='0'>";
printf("<tr><th>%2X</th>",$i);
for($j=0;$j<16;$j++)
printf("<th>%X</th>",$j);
echo "</tr>";
for($j=64;$j<255;$j++) {
if($j%16 == 0) {
if($j>64)
echo "</tr>";
printf("<tr><th>%X</th>",$j/16);
}
if($j==127)
echo "<td></td>";
else {
$v = chr($i).chr($j);
echo "<td>$v</td>";
}
}
echo "<td></td></tr></table>";
?>
<script>
obj = document.all.tags("TD");
for(i=0;i<obj.length;i++)
if(obj[i].innerHTML != "") {
ch = obj[i].innerHTML.charCodeAt().toString(16).toUpperCase();
if(ch >= "E000" && ch < "E810") ch = " ";
obj[i].innerHTML += "<br>"+ch;
}
</script>
回复
countstars 2004-11-19
请问如何重新构造一个BGK->UTF-8的对照表?我在phpx下载了个包含了四个转换表的,其中一个是“GBK编码对应的Unicode编码的16进制数表示”,这个怎么处理呢?其实很不了解这些编码的转换:(
回复
surfchen 2004-11-18
直接<?xml version="1.0" encoding="GB2312"?>算了~~

或者用那个JPGRAPH的,听说里面有一个能用,但是没用过

随便帮你UP
回复
countstars 2004-11-18
up一下:)
回复
countstars 2004-11-18
up
回复
michelle0618 2004-11-18
你写wap吧?好像没办法解决吧?比如陶喆的喆就没法解析,所以在后台录入的时候就写成吉吉了。。。。如果有什么好办法告诉我一声啊。。。
回复
countstars 2004-11-18
up!
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告