手机中文码制问题一点理解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
手机中文码制问题的一点理解 论坛上很多的帖子都是在讨论手机上的中文码制问题,我也曾綺被此类的问题所困扰,并且得到了不少热心的朋友的帮助。通过一端时间的资料查找和测试学习,我对这个问题有一点点自己的理解和想法,不敢敝帚自珍,特分享给大家,由于本人水平有限,况且也是业余的开发爱好者,没有专业的理论学习水平,所以请大家就文章中的一些错误予以谅解并提出批评,本篇的文章仅做抛砖引玉,非常的欢觃大家的跟贴,我们群策群力,共同来解决这个问题。 手机里面的字符串基本上都是采用的UTF-8的编码法。 而我们在PC机器上所采用的基本上都是ASCII和unicode编码法 ASCII编码法是单字节的编码方法,只能表示256个字符,英文字母是足够了,但是无法表示汉字。 unicode是双字节的编码法,可以用来表示汉字,但是却对于一般的英文字母浪费了太多的空间(至少面对于手机的存储是这样的)。 UTF-8就是专门手机这种嵌入式设备的新的编码法,他的特点是,传统的ASCII字符还是以一个字节来表示的,但是如果字符不属于ASCII字符集时,就用两至三个位来表示。 在 0x0001-0x007F之间的字符(传统的ASCII字符)用一个位来表示 0 | bits0-6 在 0x000以及在0x0080-0x07FF之间的字符使用下面来表示: 1 | 1 | 0 | bits 6-10 | 1 | 0 | bits 0-5 如果虚拟机看到这样的一个字符的话,虚拟机会把第一个字节最前头的110以及第二个字节的前头的10拿掉把剩下的位重新组合成一个2字节的数位来表示字符: 00000 | bits 6-10 | bits 0-5 同理,0x0800 - 0xFFFF的字符表示: 1 | 1 | 1 | 0 | bits 12-15 | 1 | 0 | bits 6-11 | 1 | 0 | bits 0-5 也可以用同样的方法重新组合成一个两个字节的字符串来 特别需要注意的是kjava中的null字符也使用两个字节来表示而不是一个字节 当然英文字符串在UTF-8编码法中不会出什么问题(默认为标准的ACSII编码机制)主要的问题还是中文,我个人在Kjava的手机开发中中文字符串所碰到的问题主要分为以下几类: 1.rms数据库读写的问题; 2.在jad中书写游戏中文名称; 3.网络传输中中文问题(kxml传输的解码); 4.部分的模拟器也不支持中文. 这几个部分是在手机开发中,中文綺常出错的险区,通常的表现形式是乱码 1.了解到了UTF-8码的基本訽理就非常的有利于我们解决码制转化的问题 在转化UTF-8码中我处理的方法是这样的 //向数据库中写入中文 String appt3 = 中文字符; ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(bos); dos.writeUTF(appt3); byte[] bytes3 = bos.toByteArray(); rs.addRecord(bytes3, 0, bytes3.length); //从数据库中读出中文 byte b3[] = rs.getRecord(dbid); DataInputStream dis=new DataInputStream(new ByteArrayInputStream(b3)); String chinastring = dis.readUTF(); writeUTF() 和 readUTF() 分别是DataOutputStream 和 DataInputStream对象的的方法,他们提供了一个由从Unicode到UTF-8的相互转化的途径。 仔细看看midp的说明文档,可以看到以下内容 writeUTF() : First, two bytes are written to the output stream as if by the writeShort method giving the number of bytes to follow. This value is the number of bytes actually written out, not the length of the string. Following the length, each character of the string is output, in sequence, using the UTF-8 encoding for the character.If no exception is thrown, the

文档评论(0)

xina171127 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档