关于中文编码转换的问题 各位大侠:先两套系统对接,对方发送到是中文“江门”,我这边收到编码得到的“陆颅脙脜”,请问对方使用了什么编码,我方通过什么方法能正确解码?请附上关键代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只通过这两个字串还不能知道什么编码,不过你可以用几种编码试试。GBK、GB2312、GB18030、UTF等,还有一个高地位的什么编码,忘记了,你查一下吧。 根据得到的字节数组来判断一下吧。汉字编码一般是gbk,utf-8,gb2312。 像“陆颅脙脜”这样的编码,在网页上看到出现过,但用不同等字符编码一个个去试,都不对。会不会是ucs-2的编码 请看这个网页,编码就是类似的,但我怎么编码转换都看不到合适的中文http://www.ydbc.com.cn/08/03/70280_11.html 看来,只能GBK、GB2312、GB18030、UTF等各个试下 都不是,请查考http://www.ydbc.com.cn/08/03/70280_11.html中内容的编码,搞不懂是什么编码 两套系统?那两边用统一编码才行,建议utf-8。 答:楼主不要烦脑,编码问题我十分熟悉,像楼主的问题,我一看,就大致知道,可能问题在何处。这个问题根本就不是什么特殊的编码,人家用的是最普通的gb2312.问题可能是楼主的代码处理不当(或:对方发送时处理不当):见我下边的分析:错误再现代码如下:String s="江门";byte[] b=s.getBytes("gb2312");System.out.println("对方发:"+s);//你从网络上接收到的对方的字符串内容其实是如下的iso_S串String iso_S=new String("江门".getBytes("gb2312"),"ISO-8859-1");//错误处理:gb2312=>utf-8=>gb2312 b=iso_S.getBytes("UTF-8");//按UTF-8处理 System.out.println("你收到的是:"+new String(b,"GBK"));//再从UTF-8输出时转换成gb2312 //你的正确做法: b=iso_S.getBytes("iso-8859-1"); //按iso-8859-1处理 System.out.println("[正确做法]你收到的是:"+new String(b,"gb2312"));//再从iso-88590-1转换成gb2312 程序运行结果:对方发:江门你收到的是:陆颅脙脜[正确做法]你收到的是:江门从我的上述(“江门”变成“陆颅脙脜”)代码,楼主应该知道原因了。 new BufferedStreamReader(new InputStreamReader(inputStream流,"GB2312"))如果是流的话可以这样..或 c ="" 收到的文本String s = new String(c.getbytes("iso8859-1")"GBK");GBK GB2312 或是utf8都试一下吧..应该是可以解决的 .. java byte流的问题!!!急! oracle调用JAVA存储过程出错 DecimalFormat关于#的问题 如果类中直接带 static 与 构造方法有什么不同? final修饰变量n,n有几种赋值方法? Spring中的lookup()有什么用处?? JAVA在界面上可用的时间显示控件? 50分(别嫌少求段代码)请进去看看。。。。谢谢。。 Anubis和其他那几个人近来看看 采用for嵌套循环如何写下面两个代码??????????? JTable读取数据库信息无法刷新 新手求助!!
GBK、GB2312、GB18030、UTF等,还有一个高地位的什么编码,忘记了,你查一下吧。
会不会是ucs-2的编码
http://www.ydbc.com.cn/08/03/70280_11.html
这个问题根本就不是什么特殊的编码,人家用的是最普通的gb2312.
问题可能是楼主的代码处理不当(或:对方发送时处理不当):
见我下边的分析:错误再现代码如下:String s="江门";
byte[] b=s.getBytes("gb2312");
System.out.println("对方发:"+s);//你从网络上接收到的对方的字符串内容其实是如下的iso_S串
String iso_S=new String("江门".getBytes("gb2312"),"ISO-8859-1");//错误处理:gb2312=>utf-8=>gb2312
b=iso_S.getBytes("UTF-8");//按UTF-8处理
System.out.println("你收到的是:"+new String(b,"GBK"));//再从UTF-8输出时转换成gb2312
//你的正确做法:
b=iso_S.getBytes("iso-8859-1"); //按iso-8859-1处理
System.out.println("[正确做法]你收到的是:"+new String(b,"gb2312"));//再从iso-88590-1转换成gb2312
程序运行结果:
对方发:江门
你收到的是:陆颅脙脜
[正确做法]你收到的是:江门从我的上述(“江门”变成“陆颅脙脜”)代码,楼主应该知道原因了。
c ="" 收到的文本
String s = new String(c.getbytes("iso8859-1")"GBK");GBK GB2312 或是utf8都试一下吧..应该是可以解决的 ..