请教6688上java程序中文问题
发表新主题 回复此主题
第1楼 2002-11-05 11:49 threejiaomao 写道:
请教6688上java程序中文问题
各位大虾,你们好!
小弟在学习j2me时,想做一个记事本程序(6688i平台),但是不知如何把gb2312编码的中文文本文件读进手机,以及如何以gb2312的形式保存编辑的文件,如有源码最好了!
小弟的代码如下:
读入时:
buf为已经从文件中读入的byte[],这没问题,因为如果把下面的encoding拿掉,英文显示没问题中文出现乱码:(
String encoding="gb2312";
String content=new String(buf,encoding);
编译时,"new String(buf,encoding)"报错说不支持这种encoding,我觉的代码没有问题,应该是java环境出错了。请问出现这种错误时如何处理?
(我用的是win2k+jb6+mobilset2.0,编码选的是gb2312)
第2楼 2013-08-31 12:44 Robot :
请教6688上java程序中文问题 相关
第3楼 2002-11-05 14:27 rocks 写道:
6688i的缺省encoding是不是就是GB啊?因为我看别人的程序读文件时好象并没有特意去设置encoding。
阿斌应该很有经验,我们等他的回贴吧:)
第4楼 2002-11-06 12:20 threejiaomao 写道:
我是在模似器(默认编码应该是iso5889.1)上测试程序的,读入中文就是乱码:(
不过模似器上运行microreader(编码选为chinese(gb2312))就能正常显示中文,我把脑子都想痛了,可就是解决不了。我的觉的可能是开发环境有问题
第5楼 2002-11-06 12:58 threejiaomao 写道:
对不起弄错了,默认编码应该是iso8859_1
第6楼 2002-11-06 13:10 threejiaomao 写道:
我在解决这个问题时,遇到的一些心得先共享出来,可能不太对。
class文件中的中文编码为utf8,可用ueidt打开查看。
jvm是把utf8编码的字符串转为unicode输出
一般文本文件是以gb2312编码的。
这样就要在程序和文本文件中进行编码转换了,我就是怎么转也出不来啊!
第7楼 2002-11-06 18:01 fengbin 写道:
siemens支持GB2312和Big5码
"gb2312"应该为大写“GB2312”,不能有丝毫差别。
第8楼 2002-11-06 19:48 rocks 写道:
[这个贴子最后由rocks在 2002/11/06 05:50pm 编辑]
to threejiaomao:
正解!
你可以用InputStreamReader直接读入GB2312编码的文件
给你一段例程:
InputStream is = this.getClass().getResourceAsStream("/mytext.txt");
Reader reader = new InputStreamReader(is, "GB2312");
StringBuffer buf = new StringBuffer();
int c = reader.read();
while (c != -1) {
buf.append((char)c);
c = reader.read();
}
is.close();
String myStr = buf.toString();
第9楼 2002-11-06 22:06 threejiaomao 写道:
感谢各位大虾的帮助,我今天在csdn上查了些资料已解决这个问题了,不过还要谢谢各位了!
我其实是范了一个低级语法错误,忘了加try{}catch{},正确代码如下:
try{
String encoding="GB2312";
String content=new String(buf,encoding);
}
catch(Exception e)
{
System.println(e.getmessage);
}
保存时类似用string.tobytes(encoding)
学java还不到一个月,有些语法不是很熟.希望其它的java初学者不要范同样的错误了。
对了版主,如果我做出了个稍微有点实用价值的程序,您要帮我发布哦:)
第10楼 2002-11-06 22:06 threejiaomao 写道:
不好意思有些单词打错了,我四级还没过呢:(
第11楼 2002-11-06 22:28 rocks 写道:
没问题啊:)
热烈欢迎在本站发布原创作品!