解决UTF-8和GBK之间转换乱码问题

2014年01月12日 01:11:14
这次的开发任务是和银行交互数据。本地应用的java文件编码格式是GBK,通信方式采用httpclient,调用httpclient的时候设定的请求参数格式为UTF-8。银行的java文件编码格式是UTF-8,post返回数据格式也是为UTF-8,post之前没有显示的进行任何编码转换。
本地应用得到银行post过来的键值对,其中有值为中文的显示为乱码。
初步判断问题为UTF-8和GBK之间编码解码不是用的同一套方式。在本地代码中先想到的是将银行的UTF-8编码的中文,转换为GBk编码,这样应该就正常了吧。
respMsg = "浜ゆ槗鎴愬姛"
respMsg = new String(respMsg.getBytes("UTF-8"),"GBK");


这样做之后,问题依然没有解决,仔细想了一下,这样做咋一看确实没有啥问题,银行的UTF-8变为本地的GBk,但仔细一想,既然本地应用得到了post的数据,本地java文件的编码格式又为GBk,显然此时本地应用将银行post过来的中文编码格式不论是什么格式,都认为是GBK,按照GBK解码,所以就出现了乱码。找到问题的根源,就好办了,既然乱码的原因是将UTF-8编码的中文,解码时用了GBk来解码,那么解决办法就应该是将乱码重新用GBK编码,再用UTF-8解码。
respMsg = new String(respMsg.getBytes("GBk"),"UTF-8");

respMsg = "交易成功"

It's work!


总结

个人觉得,乱码的原因一般是编码和解码的方式不是用的同一套格式所致,要想恢复乱码,必须对症下药,找到当初的编码格式,这样一般都能解决乱码问题。











锟斤拷?UTF-8与GBK互转,为什么会乱码?

中文乱码是怎么产生的,编码转换是怎么回事,编码转换中有哪些需要注意的,本文为你解答!...
  • u010234516
  • u010234516
  • 2016年10月18日 21:50
  • 13343

[JAVA] GBK转UTF-8汉字乱码 发现与解决

就在昨晚想写一个爬饿了么查找最适合满减价格的外卖,我的步骤是先把网页保存下来先实验正则匹配的程序, 文件打开的方式是 BufferedReader br = new BufferedReader(ne...
  • u010940780
  • u010940780
  • 2015年04月17日 22:40
  • 3104

HttpURLConnection以及GBK转UTF-8中文部分乱码问题

HttpURLConnection乱码 GBK转UTF-8汉字部分乱码
  • yss19900512
  • yss19900512
  • 2015年10月22日 17:19
  • 1933

【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换

在很多论坛、网上经常有网友问“ 为什么我使用 new String(tmp.getBytes("ISO-8859-1"), "UTF-8") 或者 new String(tmp.getBytes("I...
  • qing419925094
  • qing419925094
  • 2014年07月10日 17:56
  • 1334

【编码与乱码】(05)---GBK与UTF-8之间的转换

【GBK转UTF-8】 在很多论坛、网上经常有网友问“ 为什么我使用 new String(tmp.getBytes("ISO-8859-1"), "UTF-8") 或者 new String(...
  • WQ560
  • WQ560
  • 2013年07月01日 10:08
  • 694

JAVA字符编码乱码问题:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

java乱码问题的解决,还得从根本上进行研究,找到了问题所在,乱码将不再是问题。 因为url传送默认编码是容器的编码,tomcat默认是iso-8859-1.所以,request.gerParamet...
  • m0_37181377
  • m0_37181377
  • 2017年05月11日 10:20
  • 393

解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)

一、Qt环境设置 Qt Creator,菜单->工具->选项->文本编辑器->行为->文件编码: 默认编码:System(简体中文windows系统默认指的是GBK编码,即下拉框选项里的GBK/win...
  • libaineu2004
  • libaineu2004
  • 2014年02月15日 16:46
  • 87940

解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)

一、Qt环境设置 文件从window上传到Ubuntu后会显示乱码,原因是因为ubuntu环境设置默认是utf-8,Windows默认都是GBK. Windows环境下,Qt Creator,...
  • yuansanwan123
  • yuansanwan123
  • 2014年07月25日 08:36
  • 1123

Python 处理GBK编码转UTF-8读写乱码问题

今日写了个爬虫,爬取前程无忧的招聘信息 老套路,首先获取网页源代码 #-*- coding:utf-8 -*- import requests url = 'http://search.51jo...
  • xfyangle
  • xfyangle
  • 2017年03月09日 21:14
  • 4575

HttpURLConnection以及GBK转UTF-8中文部分乱码问题

HttpURLConnection乱码 GBK转UTF-8汉字部分乱码
  • yss19900512
  • yss19900512
  • 2015年10月22日 17:19
  • 1933
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决UTF-8和GBK之间转换乱码问题
举报原因:
原因补充:

(最多只允许输入30个字)