(assql是Flex用于连接MySql的一个开源库,可以从http://code.google.com/p/assql/downloads/list下载到。)
问题:
通过使用assql查询、更新、插入mysql记录时,中文字符都呈现乱码。
网上信息:
通过百度、谷歌一堆解决办法,基本上都是在修改assql源代码,但最新的2.8版本都已经修复,所以改源代码没用。
问题根源:
不在于assql,而在于mysql的字符集设置。
mysql字符集的问题可以参看:http://apps.hi.baidu.com/share/detail/22337180
简言之,就是将mysql上的字符集全都改为utf8,包括表中包含中文字符的每一列的字符集都改为utf8(如果是其它字符集,跟下面三个变量不一致,还是会出问题的)。
其中跟Flex关系最大的是下面3个变量:
character_set_client
character_set_connection
character_set_results
因为flex跟mysql通信实际上是客户端跟服务器之间的通信,这样的话服务器在收到客户端的请求时,要知道请求过来的字符串是何种编码,这是通过character_set_client知道的,然后mysql要把这种编码的字符串转化为自身能解释的字符串,解释成什么字符串就由character_set_connection决定,最后当需要向客户端返回响应时,Mysql还要知道该以何种编码返回给客户端,这又由character_set_results决定。