`
H4X0R
  • 浏览: 11948 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多
这次的开发任务是和银行交互数据。本地应用的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!


总结

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











分享到:
评论

相关推荐

    常用编码(Unicode,UTF-8,GBK)转换工具

    用于常用编码转换,包括BREW、JAVA等语言UNICODE字符串定义格式,网页编码,GBK及UTF-8的URL编码等

    GBK与UTF-8转码(C++)

    基于MFC CString的GBK与UTF-8编码转换,在网上找到一些代码都有问题,但都存在一些错误。现在改好了,与大家分享一下。 (MFC 非UNICODE)

    PB的utf-8转换

    PB的utf-8转换,包括加码解码等等 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    java文件编码GBK转utf8完美解决方案

    idea、Eclipse等项目导入.java文件中文乱码完美解决方案:文件夹下所有GBK编码的.java一键转为utf-8,操作方式:将GBK2UTF8.jar文件考到需要转码项目目录,在当前位置运行控制台,输入命令java -jar GBK2UTF8.jar,...

    java将gbk文件批量转换成UTF-8

    在开发的时候经常碰到这样的情况,需要将原本编码格式为GBK的工程改成UTF-8来编码,设置之后,注释全都乱码了,一个一个改太麻烦,有了这个工具只用运行一下main方法,一键搞定 ps:如果是UTF-8转GBK,或是其他编码...

    批量文本编码格式转换,支持gbk和utf-8

    自制软件,文本批量格式转换,将ansi(即gbk)与utf-8相互转换,自己编写用来在浏览器上读txt小说时,避免乱码用的,共享出来方便大家使用,支持gbk和utf-8。

    批量将Java源代码文件的编码从GBK转为UTF-8

    老项目采用GBK编码格式,而新项目采用的UTF-8编码格式,如果直接把Java源代码复制到Eclipse中所有的中文信息会出现乱码。所以写了个小的方法类,将java文件的编码格式从GBK转UTF-8

    GBK乱码数据转UTF-8

    由于程序缓存问题,导致数据库原存utf-8格式的数据,现在存进了GBK格式的数据导致乱码。需要将数据恢复,所以需要转码,现在将乱码数据导出存入Excel文件,通过java代码转换成utf-8格式的数据后打印update更新SQL...

    STM32 MDK utf8 gbk编码转换

    STM32 MDK utf8 gbk编码转换;keil默认gbk编码,而网络传输默认utf8,遇到中文就会乱码

    Java 所有字符串转UTF-8 万能工具类-GetEncode.java

    不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);

    DELPHI 10.3编码转换 iso-8859-1转GBK,GBK转iso-8859-1

    iso-8859-1转GBK,GBK转iso-8859-1,在二维码生成过程中如果没有用UTF8编码可以使用编码转换方式解决乱码问题

    Eclipse项目的GBK编码转为UTF-8插件

    当把别人的项目导入AndroidStudi中会经常发现编码错误,乱码等不可能一个一个去修改,只要你吧代码复制到eclise使用他就可以实现你想要的转码

    转码工具gbk转utf-8,支持批量

    转码工具 解决项目中乱码问题 完成gbk到utf-8的双向转换

    eclipse中class乱码GBK-UTF-8转换工具

    NULL 博文链接:https://bingyingao.iteye.com/blog/2169164

    UTF-8互转GBK

    UTF-8 GBK 转化工具 C++ 源代码编码转化 主要用于跨平台的源代码编译,防止乱码

    utf8 转为 gbk 编码

    可以帮助你把中文转换成UTF-8编码形式,UTF-8编码与中文互转,同时也支持把UTF-8编码过的字符还原成中文,将字符串转换为UTF-8形式,解决在网络传输过程中出现的字符乱码,同时可跨平台使用。

    GBK转UTF-8

    GBK转UTF-8工具,支持java工程批量转换

    .java文件中GBK编码转UTF-8编码

    在eclispe的项目中,有存在项目字符集和工作空间字符集不匹配,该jar只能将项目文件中的.java结尾的文件转为utf8编码,并且源文件必须为gbk编码的,否则乱码

    UTF8转GBK C语言 单片机

    基于Keil的用C语言写的UTF转GBK的代码,用的查表法,字库占用41K左右Flash,可以用于将数据流中的UTF文本转化为GBK,解决串口显示或者TF或LCD显示中文乱码的问题

    c/c++ 字符集 gbk/utf8互转,Ansi/Utf8互转 纯c实现跨平台

    跨平台(windows Linux)是纯c实现 gbk/utf8互转,Ansi/Utf8互转,

Global site tag (gtag.js) - Google Analytics