J2ME中文编码问题

Silence_Smile 2010-04-26 03:46:19
很纠结的一个问题,SSH+J2ME(Lwuit),在服务器端将String转成utf-8后发给客户端,始终是乱码,后来改成在客户端收到字符串后改成utf-8就好了
现在问题是在客户端要发信息给服务器,服务器收到的都是???
代码如下
String url = "http://localhost:8080/mail/mobile.do";
String parameters = "method=sendmail&receivers=" + Receivers.getText() + "&theme=" + Theme.getText() + "&content=" + ta.getText();

联网线程:
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;

/**
* 本线程用于联网取数据
* @author Silence
*/
public class HttpRequest implements Runnable {

private String url = null;
private String parameters = null;
private String result = null;
private CallBack cb = null;
private HttpConnection hc = null;
private InputStream is = null;
private OutputStream os = null;
private ByteArrayOutputStream baos = new ByteArrayOutputStream();
static String sid=null; //session id

public HttpRequest(String url, String parameters, CallBack cb) {
this.url = url;
this.parameters = parameters;
this.cb = cb;
}

public void run() {
try {
hc = (HttpConnection) Connector.open(url);
hc.setRequestMethod(HttpConnection.POST);

if(sid!=null){ //提交sessionId
hc.setRequestProperty("Cookie", sid);
}

hc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
os = hc.openOutputStream();
os.write(parameters.getBytes());
if (hc.getResponseCode() == HttpConnection.HTTP_OK) {
is = hc.openInputStream();
String cookie=hc.getHeaderField("Set-cookie"); //获取响应中的sessionId
if(cookie!=null){
sid=cookie.substring(0, cookie.indexOf(";"));
System.out.println("SessionId:"+sid);
}
byte[] data = null;
byte[] buffer = new byte[1024];
int len = -1;
while ((len = is.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
data = baos.toByteArray();
result=new HGB2312().gb2utf8(data); //将GB2312转成UTF-8显示
System.out.println("result:"+result);
cb.CallBack(result);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
baos.close();
baos=null;
is.close();
is=null;
os.close();
os=null;
hc.close();
hc=null;
} catch (Exception e) {
}
}
}
}


在J2ME PlatForm里直接输出lwuit的内容就是???,发给服务器后还是???,请高手帮忙解决,同时如果有好的教程关于解决乱码问题的也行!
...全文
168 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Silence_Smile 2010-04-29
  • 打赏
  • 举报
回复
解决了,用过滤器解决了,知道为什么new String(content.getBytes("ISO8859-1"),"utf-8");不行了
只对一个字符串进行编码没用的,要在过滤器里对整个http请求转码!
Silence_Smile 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zhouyongyang621 的回复:]

在服务器写个过滤器啊,
我之前写过一个比较好的过滤器,乱码都能搞定了。
有时候只用new String("",UTF-8)这种办法也没用的。
[/Quote]
我看了下模拟器上的编码是ISO8859-1,我在服务器端new String(content.getBytes("ISO8859-1"),"utf-8");
为什么这样还是乱码啊?
梦_枫 2010-04-29
  • 打赏
  • 举报
回复
在服务器写个过滤器啊,
我之前写过一个比较好的过滤器,乱码都能搞定了。
有时候只用new String("",UTF-8)这种办法也没用的。
Silence_Smile 2010-04-29
  • 打赏
  • 举报
回复
还是乱码...救命啊!
iced_tea_3G 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lu76689614 的回复:]
在客户端将接受到的字符串str
new String(str.getBytes("ISO-8859-1"),"GBK")
[/Quote]
帮忙再解释一下呗,还是不怎么懂,不会用
kf156 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wangrengshun 的回复:]
Java code
os = hc.openOutputStream();
dos.write(parameters.getBytes("UTF-8"));//根据需要自己改


还有我觉得最好不要GB2312与UTF-8互相转换,它们的编码不一样,会出问题
[/Quote]

顶4楼
songxing10000 2010-04-26
  • 打赏
  • 举报
回复
帮你顶了,新手
tangguoqiaokeli 2010-04-26
  • 打赏
  • 举报
回复
是啊!我的就出现这问题了!
[Quote=引用 5 楼 wangrengshun 的回复:]
Java code
os = hc.openOutputStream();
dos.write(parameters.getBytes("UTF-8"));//根据需要自己改


还有我觉得最好不要GB2312与UTF-8互相转换,它们的编码不一样,会出问题
[/Quote]
牛叔 2010-04-26
  • 打赏
  • 举报
回复
os = hc.openOutputStream();
dos.write(parameters.getBytes("UTF-8"));//根据需要自己改
wangrengshun 2010-04-26
  • 打赏
  • 举报
回复
os = hc.openOutputStream();
dos.write(parameters.getBytes("UTF-8"));//根据需要自己改

还有我觉得最好不要GB2312与UTF-8互相转换,它们的编码不一样,会出问题
wangrengshun 2010-04-26
  • 打赏
  • 举报
回复
os = hc.openOutputStream();
dos.write(parameters.getBytes("UTF-8"));//根据需要自己改

还有我觉得最好不要GB2312与UTF-8互相转换,它们的编码不一样,会出问题
lu76689614 2010-04-26
  • 打赏
  • 举报
回复
在客户端将接受到的字符串str
new String(str.getBytes("ISO-8859-1"),"GBK")
xkcxyhxy 2010-04-26
  • 打赏
  • 举报
回复
帮顶。。。。。。。。。。。
hy19880714 2010-04-26
  • 打赏
  • 举报
回复
只能友情帮顶了~
本pys60教程包为业余爱好者在手机上所写,特别适合没有电脑,在手机上编程的手机爱好者。 python for s60编程最适合机型为塞班s60v3横屏手机。请自行在手机上安装python平台, 代码编写编译反编译测试工具“ipro7”,请安装sis程序打包解包py程序打包权限修改 签名工具“智能解包”。 其中包括: 1.《tengge Py综合教程》 作者:tengge 共77节教程 2.《2D图形教程》 作者:┈┾夨憶D*.亼ぺ 共23节教程 3.《3D图形教程》 作者:┈┾夨憶D*.亼ぺ 共10节教程 4.《tengge Py补充教程》 作者:tengge 共14节教程 5.《tengge Py网络教程》 作者:tengge 共16节教程 6.《tengge Py对象教程》 作者:tengge 共14节教程 7.《常用模块用法》 作者:飞影7610等 共122个模块使用方法 8.《pys60触摸事件》 来源:互联网 塞班s60v5机型触屏编程用。 9.《腾哥py s60教程》.doc版 199页。 目录 第一章 腾哥py s60综合教程 1.0 python编程软件准备 1.1系统提示 1.2编写一个记事本程序 1.3输入框 1.4加载模块和定义函数 1.5菜单的创建 1.6列表界面 1.7打电话.发短信和彩信 1.8重启和关机 1.9画布界面 2.0制作一个音乐播放器 2.1系统进度条的调用 2.2选择列表和复选框 2.3线程的挂起与释放 2.4查看系统信息 2.5数学计算 2.6让手机说话 2.7文字格式的处理 2.8文本的保存与读取 2.9修改左右键名称 3.0折叠界面 3.1对字符串操作的函数 3.2启动程序和程序列表 3.3对列表操作的函数 3.4随机选择和随机数 3.5图像保存和处理 3.6绑定快捷键 3.7网页源码查看器 3.8联网提交数据 3.9对文件的操作 4.0制作一个截图软件 4.1局部变量和全局变量 4.2资源管理器的调用 4.3尝试语句 4.4条件语句 4.5循环语句 4.6不同类型之间的转换 4.7dir函数和解释器的使用 4.8数据库的读写 4.9检查内存和压缩内存 5.0随显模式 5.1表格Form界面 5.2程序前后台的判断及转换 5.3查看收件箱发件箱草稿箱 5.4图片移动效果的制作 5.5蓝牙的开启与关闭 5.6mbm图片的解压 5.7lambda函数的使用 5.8运行字符串中的程序 5.9对象与字符串的转换 6.0逻辑运算符 6.1定时程序的设计 6.2文本的查找替换和分割 6.3打包三版py软件的方法 6.4附加目录的创建技巧 6.5加密脚本的打包方法 6.6打包多脚本软件的方法 6.7对字典操作的函数 6.8多脚本软件的制作方法 6.9类class的使用 7.0类中__init__和__del__的使用 7.1self函数的全局性 7.2查看修改文件(夹)属性 7.3剪贴板的使用 7.4键盘锁的使用 7.5图形进度条的使用 7.6文件的复制 7.7base64的编码与译码 7.8各种编码简介 7.9汉字编码查看器 8.0字符串的压缩解压 8.1取得文件大小和修改日期 8.2文件的十六进制读取写入 8.3文件路径的分割 8.4模拟按键 8.5按键捕获 8.6%格式化输出 8.7取得时间日期 8.8其他技术介绍 8.9.后台信息提示 9.0.字体和模式字体 9.1.文本界面其他函数 9.2.焦点控制 9.3.设定程序风格 9.4.从系统打开文件 9.5.置顶信息显示 9.6.简易照相机 9.7.遍历文件 9.8.网页源码处理 9.9.短信骗子 10.0.正则表达式(1) 10.1.正则表达式(2) 10.2.raw_input和print函数 第二章 腾哥 py s60网络教程 01.无线标记语言 02.QQ网站知识 03.网页源码获取 04.网页图片获取 05.用py登录3gQQ 06.用py登录QQ空间 07.正则表达式(1) 08.正则表达式(2) 09.获取好友列表 10.修改空间心情 11.好友空间留言 12.保存网络文件 13.发帖软件制作 14.连接断开网络 15.网页源码处理 16.网络文件操作函数 第三章 腾哥py s60对象教程 01.py面向对象编程初步 02.py类的静态属性和方法 03.py类属性的外部定义法 04.py类的特殊属性和方法 05.py类的继承派生与抽象 06.让其它类使用本类属性 07.用py类模拟c语言结构体 08.用py类构建链表综合应用 09.py类的三种使用方法 10.object类的使用 11.类属性的重新定义 12.用父类构造函数初始化子类的方法 13.类的属性和实例属性的区别 14.类中标识符命名规则

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧