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;
}
转自:http://dev.10086.cn/cmdn/bbs/viewthread.php?tid=74&extra=page%3D1%26amp%3Borderby%3Dviews
分享到:
相关推荐
在本文中,我们将探讨如何使用J2ME(Java 2 Micro Edition)访问由C#编写的Web服务,并解决在传输过程中可能出现的中文乱码问题。首先,我们需要了解J2ME和.NET平台之间的编码差异。 J2ME是Java平台的一个轻量级...
- **编码问题**:确保所有字符串文件使用统一的字符编码,如UTF-8,以防止乱码问题。 - **效率优化**:由于J2ME运行在资源有限的设备上,因此需要考虑效率。可以预先加载最常用的Locale,或者在需要时按需加载,以...
5. **处理异常**:在进行编码转换时,可能会遇到乱码问题。这通常是因为指定的编码与实际的编码不符。当发生`UnsupportedEncodingException`时,你需要重新检查输入数据的编码,并尝试其他编码。 6. **自定义转换...
本指南将帮助初学者了解如何在Eclipse中配置J2ME和Ophone的开发环境,解决可能出现的问题,特别是针对J2ME的Sun模拟器中文乱码问题。 ### 1. 安装Eclipse IDE 首先,你需要下载并安装Eclipse IDE。访问Eclipse官网...
### J2ME与XML在移动设备数据交换中的应用 #### 摘要 本文探讨了在资源有限的...这种方法不仅充分利用了J2ME平台的优势,还解决了数据交换过程中可能遇到的中文乱码问题,为移动应用开发提供了一种可行的解决方案。
在本文中,我们将深入探讨如何让J2ME应用程序访问由C#编写的Web服务,同时解决中文字符传输的问题。J2ME(Java 2 Micro Edition)是一种轻量级的Java平台,广泛应用于移动设备和嵌入式系统。C#则是微软开发的一种...
在本文中,我们将深入探讨如何使用J2ME(Java 2 Micro Edition)调用.NET Web服务,并解决中文字符传输的问题。这个过程涉及多个步骤,包括环境配置、创建Web服务、设置编码以及编写J2ME客户端。 首先,确保你已经...
由于示例程序未处理中文字符,这在处理多语言邮件时会导致乱码问题。解决方法包括使用支持Unicode的编码方式,如UTF-8,以及正确处理字符编码转换。此外,还可以优化数据传输和内存管理,例如分批下载大邮件,及时...
URLDecoder 和 URLEncoder 的使用与区别 ...在 Web 开发中,字符串之间的转换是一个常见的问题,特别是在处理非西欧字符时。...在 Web 开发中,这两个类可以帮助我们解决字符串之间的转换问题,避免乱码问题的出现。
总之,"ChinaCharConversionJ2ME"是一个关于J2ME平台上中文字符转换的实例,对理解和解决移动游戏开发中的字符编码问题提供了宝贵的参考。通过深入研究这个代码库,开发者不仅可以掌握字符编码转换技术,还能了解到...
kSOAP 1.2解决了这个问题,确保在与Web服务通信时能正确编码和解码中文字符,避免了数据丢失或显示错误。 在描述中提到,解压缩后的文件是一个名为"org"的文件夹。这个文件夹包含kSOAP库的源代码文件,这些文件通常...
- iReport设计环境中可能出现的乱码问题解决策略,这通常涉及到字体的设置或编码的调整。 - **设计报表**: - 如何设计最简单的报表,以及如何处理带有中文的报表,涉及字体、编码和布局的设计。 - **数据库集成*...
##### 3.2 解决乱码问题 在设计包含中文字符的报表时,乱码是一个常见问题。iReport提供了多种解决方案,包括字体设置、编码调整等,以确保中文字符的正确显示。 ##### 3.3 设计报表 从创建最简单的报表开始,...
在iReport的设计环境中遇到中文乱码问题时,需检查系统的字符编码设置,确保与报表设计中使用的编码一致。此外,正确配置字体也能有效避免乱码。 ##### 3.3 设计一个最简单的报表 设计报表的基本步骤包括创建报表...
针对中文字符乱码的问题,可以通过以下方法解决: 1. **设置编码**:在iReport中,确保文本框的字符编码设置为UTF-8。 2. **字体设置**:选择支持中文显示的字体。 ##### 3.3 如何设计一个最简单的报表 设计报表...
设计环境中可能遇到的乱码问题,通常通过调整字体或编码设置来解决。设计最简报表时,需关注布局、字段、样式等基本要素。处理中文报表时,字体配置尤为关键,需确保支持中文显示。使用数据库数据生成报表,涉及...
先中后英,本着以解决问题为主的想法,练习英文还是先放在一边吧,首先应该在中文网页中查询,还不行的话,搜索英文的吧,最近的尚学堂课程中会带大家阅读英文的书籍。有很多东西就像一层窗户纸,远看灰蒙蒙怪唬人...