php编码转换问题-高手帮我看看这两种编码是怎么互相来转换的

来源:百度知道 编辑:UC知道 时间:2024/06/05 03:02:05
原文如下:
9儢宁咱岞奂侥僗僩傪宱偰PHP 3.0偼1998擭6宁侦岞帏侦侪侪乕僗偝傟杰偟偨丅
听说这是GB2312?
经过编码后得到如下正确内容:
9ヶ月の公开テストを経てPHP 3.0は1998年6月に公式にリリースされました。
听说这是Shift-JIS编码?
现在我想知道,这两种到底是什么编码,如何从
9ヶ月の公开テストを経てPHP 3.0は1998年6月に公式にリリースされました
转化到
9儢宁咱岞奂侥僗僩傪宱偰PHP 3.0偼1998擭6宁侦岞帏侦侪侪乕僗偝傟杰偟偨丅
$value='9ヶ月の公开テストを経てPHP 3.0は1998年6月に公式にリリースされました';

$value=iconv('Shift-JIS','gb2312',$value);

这样我试过了,没用。
$value=iconv('Shift-JIS','utf-8',$value);
也没用。真搞不懂是怎么回事。

9ヶ月の公开テストを経てPHP 3.0は1998年6月に公式にリリースされました
应该确实是Shift-JIS编码了,但是不知道下面这种怪异的东西是什么编码得来的:
9儢宁咱岞奂侥僗僩傪宱偰PHP 3.0偼1998擭6宁侦岞帏侦侪侪乕僗偝傟杰偟偨丅

和页面本身编码有关。当页面编码和字符集不符合时就会产生乱码。日语是可以直接用 GBK 编码显示的。

之前的乱码是因为 UTF8 编码在 GB2312 下使用才会乱的。如果你是直接 echo 的话。就不会乱码。。因为你输出以后。字符集全是这个编码的。IE 自动改变了字符集。。你把它夹在一个声明为 gb2312 的页面里输出就会是乱码了。。转换语句应该写为:
$value=iconv('gb2312','utf-8',$value);