关于中文编码转换的问题 各位大侠:先两套系统对接,对方发送到是中文“江门”,我这边收到编码得到的“陆颅脙脜”,请问对方使用了什么编码,我方通过什么方法能正确解码?请附上关键代码 解决方案 » 免费领取超大流量手机卡,每月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都试一下吧..应该是可以解决的 .. the static method cannot hide instance method from object 一个简单的字符串的问题!!! 如何用java或jsp 实现压缩图片的浏览功能 JRidioButton怎样插入到SQL Server2000数据库 改了,可是另一个错误又来了 初学者的一个this问题 有向图,求判断两个节点间有无路径到达的java算法,无递归最好 线程问题:3问题 网上搞来java实现zip功能,怎么通不过????? 为什么我的JDK工作不正常? 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都试一下吧..应该是可以解决的 ..