改变Flex的中文编码方式
2015-03-13
最近在和后台服务端交互数据的时候遇到一个问题,客户端和服务端编码方式不一致,导致传到后端的中文是乱码,或者从后端传到前端的中文是乱码,这个分开说明吧。
一、后端传到前端的中文乱码
客户端向服务端POST一个请求,服务端返回了一段数据,数据里包含中文,在客户端获取这段数据时,中文那部分全是乱码,怎么办?这个好办。
不管你用什么方式和后端交互,在向后端发送数据之前,添加一行代码:
flash.system.System.useCodePage = true;
然后通过监听ResultEvent.RESULT事件得到后端发回来的数据,这时候你会发现中文不再是乱码了,当然,处理完数据后记得把useCodePage的值调回false:
flash.system.System.useCodePage = false;
二、前端传到后端的中文乱码
这个问题就要好好说说了,但是我也没法好好说说,因为捣鼓了半天,实在不知道Flex默认是以什么编码发送中文数据的,所以我们在发送数据之前得把数据进行转码再发送到后端:
以上是进行编码和进行解码的函数,如果想把“中文编码”四个字进行GBK编码怎么办?简单:
decodeToUrl("中文编码", "GBK");
这样就行了。编码过的字符串传到后台,后台只要以对应的编码进行解码,就不会显示乱码了。 关于FLex支持的字符集,请点击查阅。 你肯定还有一个疑问,这个escape()和unescape()又是什么东西?这个是用URL编码格式进行编码和解码,那么这个又是什么东西?这个就不是今天要讨论的主要内容啦,如果你想知道,可以Google搜索“URL编码格式”进行扩展阅读。
除非另有声明,本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。