flash登录界面正常显示与当前系统编码页不同的语种版本

来源:互联网 发布:淘宝卖电子书 编辑:程序博客网 时间:2024/05/17 03:28

        为了表现更加良好,现在登录界面通常使用flash的形式。

        之前的登录界面,是vc端读取配置后,发ANSI编码的字符串给flash端用于显示,而flash就以当前系统编码页来解释这段文字数据。

        这就导致了一个问题,当程序资源版本与系统编码页版本不符的时,显示出来的flash登录界面是乱码。在外部确实有类似的情况,例如不少阿拉伯玩家,他们用阿拉伯版本的客户端,但他们可能使用的是英文系统。

        为了解决这个问题,和做flash的同学那边商量了下,据说as2中,只有System.useCodepage是和编码方式相关,但要么就是unicode,要么就是系统编码页。尝试给flash那边传UTF8的字符串,但比较怪异的是,flash那边得到的数据也还是一样。网上搜索了些适用于as的转码处理,可惜据说都是as2不支持的。好在as上是用UTF16的编码来得到字符的。例如

        String.fromCharCode("32593")  就可以得到一个中文的“网”字。

        于是尝试用vc端来做转码,然后按特殊的约定格式发给flash端。具体来说,就是先将需要传给flash的字符串,转换成UTF16的形式,例如要发的字符串为“网”,那么就发过去"32593 0",又如“风起云涌”,则为 "39118 36215 20113 28044 0"。然后flash端再将文字一个一个拼接起来,就得到了正确的文本。由于传送的是unicode信息,将不在被系统编码页说影响,在任何系统下都可以使用。