永恒的主题--java与.net通信编码统一(个人笔记)

来源:互联网 发布:西安编程培训班 编辑:程序博客网 时间:2024/06/06 03:23

最近为商城接入游戏点卡充值接口,我们的项目环境是utf8编码,对方是GBK,为此造成了一些恼人的问题。(一下简称我们为J,对方为N)


N要求用GET方式提交参数,参数列表如k1=v1&k2=v2&.....&kn=vn; 其中,v要经过urlEncode,编码格式为GBK。


接收N发来的信息:

当参数中有中文的时候,直接用req.getParameter(“”),会产生乱码,因为该方法会自动调用urlDecode方法用容易默认的unicode编码对其解码,所以要这样:

byte[] names = req.getParameter("name").getBytes("ISO-8859-1");String name = new String(names,"GBK");

如此,就能正确的得到中文。


有一个问题,java是以unicode存储代码的,那么在java代码中,String temp =  new String("你好"); temp是什么编码呢?UTF-8还是GBK?  其实,还是unicode,只不过是输出或传送时,进行编码格式化。


向N发送数据

因为需要将value进行编码,用key+"="+URLEncoder.encode(value,"GBK"),这样编码就可以了,然后在发送请求时,httpcon.setRequestProperty("Content-Type", "text/xml;charset=GBK");


收工。


个人笔记,不能保证准确性。

原创粉丝点击