amfphp的乱码问题

flash使用remoting和amfphp通信传值时,php类编码格式为ANSI时一切正常,但返回给flash的结果如果是中文就会出现乱码……这是编码格式的问题,可是当我把php类转存为UTF-8的编码格式时,诡异的现象出现了!不仅flash提示编码格式不识别,连amfphp的在线调试器browser也识别不了那个php类了……我就郁闷了,以前没有碰到过这种情况,如果是代码错误,那么不会在转了格式后才出现错误,在转格式之前就会因代码无法运行而报错,或弹出运行时错误。而且以前将php人工转成UTF-8后browser仍然能识别。

  本以为这个问题可以很快解决,谁知道越做越离奇,结果做得我牛脾气发作:不解决你老子就不睡了!后天还要考试啊……今天半天的复习又泡汤了……

  使用google到网上搜索了4个小时后,我都快吐血了,问题不仅没有解决,还有越发复杂的趋势。又找了2个小时后,终于被我搜集到了7个与这个问题相关的解决办法,都提到了要修改amfphp中的gateway.php文件第127行代码:

   $gateway->setCharsetHandler( "utf8_decode", "ISO-8859-1", "ISO-8859-1" );


  可怕的是,这些改法几乎都不一样,所有可能的参数组合基本全都出现了……但乱码返回值还是义无反顾的显示。我绝望了,如果还是没有改观,我想我就要砸桌子了(看来还是有理性的)。

  整理整理思路,再把搜索到的所有解决办法从头试一遍,虽然我倒霉得试到最后一个才找到了解决办法,把那句话改为:

   $gateway->setCharsetHandler( "mbstring", "gb2312", "gb2312" );

  顽固的乱码终于被镇压了!gb2312的格式一开始并不是没有想过,只是一直都想把它用UTF-8保存,对gb2312完全不予考虑……不过,既然能解决,就先用着先,可怜的UTF-8啊~ 纠结中。尽管根本问题没有根除,不过先得到处理先吧,这样至少能往下做了。

你可能感兴趣的:(PHP,Google,Flash)