在具体的开发过程中,语言编码问题经常会发生问题。有些时候,手机模拟器能够正常显示,而真实的手机设备不能正常显示,而有些时候则相反,甚至两者都不正常。究其原因,是因为编码的转换问题。
因为在这个传输过程中,可能存在三种编码方式:
文本在服务器端的编码方式
文本在网络中传输的时候的编码方式
文本到达终端设备的编码方式
因此,在传输过程中,需要发生两次转换过程:
从服务器端编码转换为网络编码
从网络编码转换为终端设备编码
在这个过程中发生任何问题,就会导致编码的不正确。
一般来讲,大部分手机设备只支持Unicode字符集,所以在连接网页的时候,期望网页数据在网络中是通过UTF8格式传输,这就可以简单的通过转换将UTF8字符转换为Unicode并且正常显示。
另外的一种方式就是传递中需要使用ISO8859-1字符集,因此需要将网页数据首先转换为Unicode编码,再把Unicode转换为使用Ascii码的表示方式。JDK中提供了相关的工具native2ascii,可以进行类似的转换。如“中国”就转换成为了\u4e2d\u56fd的显示模式。这就是所谓ASCII模式的Unicode。在接收到这些数据时,首先进行反转换,才能够正常显示。