风雨十年,感恩同行

[原创] zlchat在不同浏览器下可能产生乱码的解决方案

[复制链接]
发表于 2011-9-7 12:22:00 | 显示全部楼层 |阅读模式
zlchat在给swf文件传递参数的时候使用如下代码:
  1. $connStr="userName={$USER_NAME}&password={$PASSWORD}&mediaServer={$MEDIA_SERVER}&role={$ROLE}&roomID={$APPINSTANCE}&scriptType={$SCRIPT_TYPE}";
  2. ?>
  3. <script language="javascript">
  4.         if (AC_FL_RunContent == 0) {
  5.                 alert("此页需要 AC_RunActiveContent.js");
  6.         } else {
  7.                 AC_FL_RunContent(
  8.                         'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/Flash/swflash.cab#version=10,0,0,0',
  9.                         'width', '100%',
  10.                         'height', '100%',
  11.                         'src', 'preloader?<?php echo $connStr ?>',

  12.                         'movie', 'preloader?<?php echo $connStr ?>',
  13.                         'salign', ''
  14.                         ); //end AC code
  15.         }
  16. </script>
复制代码
原理:
就是先用php生产一个含有参数的字符串变量connStr,再将该变量作为传递参数传给preloader。

可能产生问题:
在IE9下,人名可以正常显示,但是在chrome浏览器下就显示乱码。

影响文件:
vmeet.php与vmeet2.php

解决方案:
在如下语句:
  1. $connStr="userName={$USER_NAME}&password={$PASSWORD}&mediaServer={$MEDIA_SERVER}&role={$ROLE}&roomID={$APPINSTANCE}&scriptType={$SCRIPT_TYPE}";
复制代码
上方加入如下语句,看清,是“上方”!!

  1. $USER_NAME=mb_convert_encoding($USER_NAME, "utf-8","gbk");
  2. $USER_NAME = rawurlencode($USER_NAME);
复制代码
说明:
这两个语句分别先用最广泛的gbk字符集强制转换成utf-8,然后再转换成ASCII编码,最后传递给swf文件。这样避免了在不同浏览器下对非ASCII编码的自动转换产生的差异。
正常情况下,对于flash传参尽量encode处理,防止非ascii码的表现不正常


同时感谢冬瓜哥~
发表于 2011-9-7 12:39:36 | 显示全部楼层
楼主好贴,帮顶……                           
 楼主| 发表于 2011-9-9 01:01:53 | 显示全部楼层
没人发现这个问题???????????????
发表于 2011-9-12 00:06:15 | 显示全部楼层
受教了,谢谢楼主,帮顶!

                                                
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:592439202

服务时间 9:00-22:00

金蝶用友易助管家婆深度服务
 
QQ在线咨询
售前咨询热线
592439202
售后服务热线
243998158
快速回复 返回顶部 返回列表