目前我碰到一个这样的问题,想寻求大家帮助。假设我有一个文件 a.js 编码gb2312.
现在我要远程读取这个问题。我尝试2种页面方式读取。方法1,用PHP写了读取文件。
read.php(gb2312) 读取a.js
show.php(utf-8) 调用read.php的读取内容,<script src="read.php" charset="gb2312"></script>IE8下面读取都成功,IE7 乱码方法2,
read.php(utf-8) 读取a.js
show.php(utf-8) 调用read.php的读取内容 ,<script src="read.php" charset="utf-8"></script>IE7\IE8下面全部是乱码。问题来了。方法1有没有可能实现编码乱的问题问题。
方法2,我读取的a.js还是gb2312.怎么能把他转变成为utf-8的呢?如果能转变,用什么方法。
事实上,我有记事本把a.js转变成为utf-8 在IE7 IE8下面都是成功了。
======================
劳驾指点!!!!

解决方案 »

  1.   

    那你就在read.php里iconv或mb_一下不就行了?
      

  2.   

    read.php里把你读取到的js数据进行转码即可!
      

  3.   

    试试
    <?
    /**/
    /*识别编码并转换成UTF-8格式*/
    function code($str){
     //检测字符串编码
     $code =@mb_detect_encoding($str, array('ASCII','GB2312','GBK','UTF-8'));
     $result=@mb_convert_encoding($str,"UTF-8",$code);//将编码$code转换为utf-8编码
         return $result;
    }?>
      

  4.   

    首先关键的一点,你那个 read.php 和 show.php 本身是用什么编码方式书写的,并不重要。反正你是读取 a.js,然后把所有字节都送到 output 里面去。然后,方法 1 中的 IE7 为什么会乱码呢?我怀疑你那个 <script src="read.php" charset="gb2312"></script> 有问题,MSDN 里,charset 只是一个 property,而不是 attribute,你这种写法可能是无效的,这样的话,浏览器会期望 a.js 跟引用它的网页是同样的编码方式(而不一定是 gb2312)。你不妨试试 <script src="..." LANG="zh-cn"></script>
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  5.   

    刚刚又查了一下在线的 MSDN,charset 已经是 script 的 attribute 了。这也许正印证了你方法 1 中 IE8 不乱码的原因。
      

  6.   

    感谢各位仁兄的指点的。t240034137
    朋友的想法以前是有考虑过的。但是读取远程JS 设计编码复杂,如果是KB大一点的话也是一个麻烦事情。可能大家都会有乱码的问题。maquan
    这个想法我是没有看过的。。
    不过还是有乱码。。我去翻翻MSDN谢谢!!!
      

  7.   

    我按照你的描述构建了测试环境,结果……只要写上 charset="gb2312",所有的浏览器都不出现乱码(我用的是 IETester,甚至连 IE6 都测了一下)。我还通过 doctype 控制了一下页面的显示模式(Quirks Mode/Standards Mode),一样,都不出现乱码。似乎可以肯定我前面猜测的那个原因是不存在的。但现在的问题是,为什么你那里的 IE7 会出现乱码呢?你在 PHP 里对读取到的 a.js 做了什么处理吗?
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)