header("Content-Type: text/html; charset=utf-8");
$a="'鑻辨牸鍏拌冻鐞冭浼氬寳閮ㄨ伅璩?";
$a=trim($a,"'");
echo $a;
//以下是如果字符串统一为简体UFT-8或繁体UFT-8的转换代码
if($is_gb2312){ //简体UFT-8
$a=mb_convert_encoding($a,"gb2312","UTF-8");
$a=gb2312_to_big5($a);
}else{//繁体UFT-8
$a=mb_convert_encoding($a,"big5","UTF-8");
}
以前代码输出 英格兰足球议会北部聯賽
我想将内容统一转为big5或者gb2312保存,因为需要在header("Content-Type: text/html; charset=big5");下输出.
应该如何处理?
望高手指引,感激万分。
11 个解决方案
#1
为啥不用UTF-8啊,你这样维护很麻烦的。
而且没看明白你想做什么,header里面已经设置了utf-8输出,你后面为什么还要做转换?
而且没看明白你想做什么,header里面已经设置了utf-8输出,你后面为什么还要做转换?
#2
因为这是一个附加的功能,原系统已经做好了,用的是charset=big5。上面的数据是从网页上取回来的,那个网上就是用utf-8。
#3
那你的操作顺序错了,应该是这样:
<?php
//获取网页内容
//以下是如果字符串统一为简体UFT-8或繁体UFT-8的转换代码
if($is_gb2312){ //简体UFT-8
$a=mb_convert_encoding($a,"gb2312","UTF-8");
$code = "gb2312";
}else{//繁体UFT-8
$a=mb_convert_encoding($a,"big5","UTF-8");
$code = "big5";
}
header("Content-Type: text/html; charset=$code");
echo $a;
?>
#4
if($is_gb2312){ //简体UFT-8
$a=mb_convert_encoding($a,"gb2312","UTF-8");
$code = "gb2312";
}else{//繁体UFT-8
$a=mb_convert_encoding($a,"big5","UTF-8");
$code = "big5";
}
以上代码只能当$a全是简体utf-8或者全是繁体utf-8的时候才可以用,取回来的数据是 "英格兰足球议会北部聯賽" 只有联赛2字是繁体,前面几只字是简体,所以无论如何用上面代码转都会出现部分字乱码。
#5
这样当然得用UTF-8编码输出,要不然网页都会有乱码的。
#6
$a="'鑻辨牸鍏拌冻鐞冭浼氬寳閮ㄨ伅璩?"; //'英格兰足球议会北部聯
echo iconv('utf-8', 'gbk', $a); //转码成 gbk
echo iconv('utf-8', 'gig5', $a); //转码成 big5
echo iconv('utf-8', 'gbk', $a); //转码成 gbk
echo iconv('utf-8', 'gig5', $a); //转码成 big5
#7
header("Content-Type: text/html; charset=big5");
$a="'鑻辨牸鍏拌冻鐞冭浼氬寳閮ㄨ伅璩?";
$a=trim($a,"'");
echo iconv('utf-8', 'gbk', $a); //转码成 gbk
echo '<hr>';
echo iconv('utf-8', 'big5', $a); //转码成 big5
按楼上的还是乱码啊...
#8
那个 $a 的内容是 uft-8 编码的,只在 uft-8 环境中不乱码
转成 gbk 就要在 gbk 环境下观看
转成 big5 就要在 big5 环境下观看
环境不同,效果也不同
转成 gbk 就要在 gbk 环境下观看
转成 big5 就要在 big5 环境下观看
环境不同,效果也不同
#9
我就是想在big5页面的环境下显示utf-8码,只能转换。如果utf-8码显示的是繁体字 用$a=mb_convert_encoding($a,"big5","UTF-8");是可以解决。但问题是 utf-8码显示的是繁体字和简体字混合。
用
$a=mb_convert_encoding($a,"big5","UTF-8");
$a=mb_convert_encoding($a,"gb2312","UTF-8");
都会有几个字是乱码。能不能做到每个字去判断是简体utf-8还是繁体utf-8(就是在utf-8环境下显示这个字会是简体字还是繁体字),如果能做了判断再单个字转就OK。
这网址真能整人,希望大虾们帮助。
用
$a=mb_convert_encoding($a,"big5","UTF-8");
$a=mb_convert_encoding($a,"gb2312","UTF-8");
都会有几个字是乱码。能不能做到每个字去判断是简体utf-8还是繁体utf-8(就是在utf-8环境下显示这个字会是简体字还是繁体字),如果能做了判断再单个字转就OK。
这网址真能整人,希望大虾们帮助。
#10
“简体/繁体”是“字符集(charset)”的问题,不要跟“编码方式(encoding)”搞混了。
你取回来的数据既然能够简繁体混排,基本上可以肯定是 UTF-8 编码方式,但是你必须先考虑进行“简/繁体转换”,统一到一个字符集,然后才能考虑转换成 GB2312 或者 BIG5 编码方式,因为这两种编码方式都无法同时支持“简体/繁体”字符集。
不过,“简/繁体转换”可不是一个简单的事情哦 @_@
#11
根据 UTF-8 的码值应该是能区分出简体还是繁体的,因为它们有不同的码段(虽然可能比较零碎麻烦)。
问题是,区分出来你也不能直接进行编码方式的转换,因为一个繁体字根本就没有对应的 GB2312 编码,反之亦然。
所以,真要完美解决的话,恐怕难逃“简/繁体转换”,但是这个确实不容易,比如“发”,你是转换成“發”还是转换成“髪”?这要看上下文的。
#1
为啥不用UTF-8啊,你这样维护很麻烦的。
而且没看明白你想做什么,header里面已经设置了utf-8输出,你后面为什么还要做转换?
而且没看明白你想做什么,header里面已经设置了utf-8输出,你后面为什么还要做转换?
#2
因为这是一个附加的功能,原系统已经做好了,用的是charset=big5。上面的数据是从网页上取回来的,那个网上就是用utf-8。
#3
那你的操作顺序错了,应该是这样:
<?php
//获取网页内容
//以下是如果字符串统一为简体UFT-8或繁体UFT-8的转换代码
if($is_gb2312){ //简体UFT-8
$a=mb_convert_encoding($a,"gb2312","UTF-8");
$code = "gb2312";
}else{//繁体UFT-8
$a=mb_convert_encoding($a,"big5","UTF-8");
$code = "big5";
}
header("Content-Type: text/html; charset=$code");
echo $a;
?>
#4
if($is_gb2312){ //简体UFT-8
$a=mb_convert_encoding($a,"gb2312","UTF-8");
$code = "gb2312";
}else{//繁体UFT-8
$a=mb_convert_encoding($a,"big5","UTF-8");
$code = "big5";
}
以上代码只能当$a全是简体utf-8或者全是繁体utf-8的时候才可以用,取回来的数据是 "英格兰足球议会北部聯賽" 只有联赛2字是繁体,前面几只字是简体,所以无论如何用上面代码转都会出现部分字乱码。
#5
这样当然得用UTF-8编码输出,要不然网页都会有乱码的。
#6
$a="'鑻辨牸鍏拌冻鐞冭浼氬寳閮ㄨ伅璩?"; //'英格兰足球议会北部聯
echo iconv('utf-8', 'gbk', $a); //转码成 gbk
echo iconv('utf-8', 'gig5', $a); //转码成 big5
echo iconv('utf-8', 'gbk', $a); //转码成 gbk
echo iconv('utf-8', 'gig5', $a); //转码成 big5
#7
header("Content-Type: text/html; charset=big5");
$a="'鑻辨牸鍏拌冻鐞冭浼氬寳閮ㄨ伅璩?";
$a=trim($a,"'");
echo iconv('utf-8', 'gbk', $a); //转码成 gbk
echo '<hr>';
echo iconv('utf-8', 'big5', $a); //转码成 big5
按楼上的还是乱码啊...
#8
那个 $a 的内容是 uft-8 编码的,只在 uft-8 环境中不乱码
转成 gbk 就要在 gbk 环境下观看
转成 big5 就要在 big5 环境下观看
环境不同,效果也不同
转成 gbk 就要在 gbk 环境下观看
转成 big5 就要在 big5 环境下观看
环境不同,效果也不同
#9
我就是想在big5页面的环境下显示utf-8码,只能转换。如果utf-8码显示的是繁体字 用$a=mb_convert_encoding($a,"big5","UTF-8");是可以解决。但问题是 utf-8码显示的是繁体字和简体字混合。
用
$a=mb_convert_encoding($a,"big5","UTF-8");
$a=mb_convert_encoding($a,"gb2312","UTF-8");
都会有几个字是乱码。能不能做到每个字去判断是简体utf-8还是繁体utf-8(就是在utf-8环境下显示这个字会是简体字还是繁体字),如果能做了判断再单个字转就OK。
这网址真能整人,希望大虾们帮助。
用
$a=mb_convert_encoding($a,"big5","UTF-8");
$a=mb_convert_encoding($a,"gb2312","UTF-8");
都会有几个字是乱码。能不能做到每个字去判断是简体utf-8还是繁体utf-8(就是在utf-8环境下显示这个字会是简体字还是繁体字),如果能做了判断再单个字转就OK。
这网址真能整人,希望大虾们帮助。
#10
“简体/繁体”是“字符集(charset)”的问题,不要跟“编码方式(encoding)”搞混了。
你取回来的数据既然能够简繁体混排,基本上可以肯定是 UTF-8 编码方式,但是你必须先考虑进行“简/繁体转换”,统一到一个字符集,然后才能考虑转换成 GB2312 或者 BIG5 编码方式,因为这两种编码方式都无法同时支持“简体/繁体”字符集。
不过,“简/繁体转换”可不是一个简单的事情哦 @_@
#11
根据 UTF-8 的码值应该是能区分出简体还是繁体的,因为它们有不同的码段(虽然可能比较零碎麻烦)。
问题是,区分出来你也不能直接进行编码方式的转换,因为一个繁体字根本就没有对应的 GB2312 编码,反之亦然。
所以,真要完美解决的话,恐怕难逃“简/繁体转换”,但是这个确实不容易,比如“发”,你是转换成“發”还是转换成“髪”?这要看上下文的。