写J2ME电话本程序是遇到了乱码问题
原因:因为程序中用了String 而 中文输入法是UTF编码,模拟器没有测试出BUG。
解决方案:将需要写入RMS的String转换成UTF编码的String类型就可以了。
写入时用 ByteArrayOutputStreambos和 DataOutputStream dos封装,
用dos. writeUTF()方法写入RMS库。用bos. toByteArray()获得byte[](rms需要写入byte[])
读取时用ByteArrayInputStream bis 和 DataInputStream dis 封装,
用dis.readUTF方法从RMS库读出。用bis. toByteArray()获得byte[](rms需要读取byte[])
参考如下代码 :
private RecordStore rs = null;
private RecordEnumeration re = null;
try {
rs = RecordStore.openRecordStore("Result", true);
re = rs.enumerateRecords( null,null,false);
}catch(RecordStoreException e) {}
添加姓名:
private void addName(String name) //保存姓名
{
ByteArrayOutputStream bos= new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
try {
dos.writeUTF(name);
byte data[] = bos.toByteArray();
bos.close();
dos.close();
try {
rs.addRecord(data,0,data.length);
}catch(RecordStoreException e) { }
}
catch (IOException ex) {
}
}
读取姓名:
while (re.hasNextElement()) {
byte[] data= re.nextRecord();
try {
ByteArrayInputStream bis = new ByteArrayInputStream (data);
DataInputStream dis = new DataInputStream(bis);
String name = dis.readUTF(); //取出姓名
bais.close();
dis.close();
}catch (IOException ex) {}
}