网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > J2EE/J2ME
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.使用Hibernate处理数据.
.扫描屏幕和颜色渐变的效果.
.无线标记语言(WML)基础之编程方法.
.使用SAAJ1.2发送和接收二进制Web.
.精通Hibernate映射继承关系之三.
.用Lucene做一个简单的Java搜索工.
.SpringWebFlow:4(SpringMVC和Web.
.入门-J2ME学习日记之利用eclips.
.jBPM发送信号,流程进入下一步.
.JBoss-3.0.1RC1_Tomcat-4.0.4中的.
.JSP中tomcat的SQLServer2000数据.
.利用HSQLDB 进行Hibernate单元测.
.J2ME联网中采用序列化机制.
.JB4 与 WebLogic 的整合.
.Flash Lite挑战J2ME.
.JavaBean-XML组件轻松实现JavaBe.
.创建简单Eclipse插件实现AxisWeb.
.一个时间服务器简单实现.
.使用J2EE构建服务.
.JDBC概述(六).

J2ME中文问题的解决方案

发表日期:2007-12-23


    Java的中文问题通常会困扰很多开发者,你可能在开发Web应用程序的时候遇到中文参数的传递问题,最后你可能选择使用Filter把Request的编码方式设置为GBK来解决。在J2ME的开发中我们同样会遇到中文问题,比如在RMS中存储中文、网络传输中传输中文、从文件中读取中文等问题。

    我们在解决中文问题的时候,用到的最多的一个词就是UTF-8。我们知道ASCII码是单字节编码方式,可以解决英文的问题,但是中文的字库非常庞大,用ASSII码就难以解决了。Java语言是支持UNICODE编码方式的,UNICODE是双字节的编码方式可以支持中文字库,但是这多少带来一些浪费,因为并不是所有的字符串都是非英文字符的。UTF-8编码方式正好可以解决这个问题,只有当字符不是ASSII码的时候他采用双字节来表示,这样就节省了空间。这里我只总结了三种J2ME常见的中文问题。

  1. 网络传输中的中文问题
        解决这个问题的关键是我们不采用InputStream或者OutputStream提供的方法按照字节来传递数据,而是把InputStream或者OutputStream封装为DataInputStream和DataOutputStream。这样我们就可以使用DataOutputStream中的writeUTF(String s)来送出数据了,同时可以使用DataInputStream提供的readUTF()来读入数据。注意在这两个方法搭配使用的时候要注意顺序。比如我们在联网的时候可能写出这样的代码
       
        客户端
      dos.writeInt(myint);
        dos.writeByte(mybyte);
        dos.writeUTF(myString);

        服务器端
        int i = dis.readInt();
        byte b = dis.readByte();
        String s = dis.readUTF(); 
  2. RMS持久性存储的中文问题
        由于RMS中的数据存储都是按照byte[]的格式存储的,因此我们需要稍微变化一下,但是基本上还是走UTF-8的思路。
       
        写入数据
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);
        dos.writeUTF(myString);
        byte[] data = baos.toByteArray();
        rs.addRecord(data,0,data.length);

        读出数据
        byte[] data = rs.getRecord(index);
        ByteArrayInputStream bais = new ByteArrayInputStream(data);
        DataInputStream dis = new DataInputStream(bais);
        String myString = dis.readUTF();
  3. 读取中文文件的问题
    在MIDP中并不支持文件系统,但是我们可以读取jar包中的文件。如果文件中含有中文,那么我们需要进行一些特殊的处理,首先我们使用UE或者Notepad工具把相关的文件转换文UTF-8格式编码。我们在读取文件的时候需要进行如下的简单处理。下面是处理函数。

        public String readFromFile(String fileName)
        {
            String returnString = null;
            InputStream is = getClass().getResourceAsStream(fileName);
            if (is != null)
            {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                int ch = 0;
                try
                {
                    while ((ch = is.read()) != -1)
                    {
                        baos.write(ch);
                    }
                    byte[] data = baos.toByteArray();
                    returnString = new String(data, "UTF-8");
                    is.close();
                    baos.close();


            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }
        return returnString;
    }

(出处:)


上一篇:MIDP图形用户界面结构分析 人气:998
下一篇:用J2ME实现简单电子邮件发送功能 人气:684
浏览全部J2EE/J2ME的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐