这次的开发任务是和银行交互数据。本地应用的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编码,以及如何在LabVIEW环境下进行这两种编码之间的转换。 首先,UTF-8(Unicode Transformation Format - 8 bit)是一种变长的Unicode编码,它使用1到4个字节来表示一个字符。UTF-8...
例如,如果你需要从一个使用GBK编码的系统获取数据,而你的程序默认使用UTF-8编码,那么就需要进行这样的转换,以避免乱码问题。反之,如果你的数据需要发送给使用GBK编码的系统,你也需要做相应的转换。 总之,这...
本文将详细解析“简单的UTF-8与GBK之间相互转码工具”,并介绍相关的编码概念和实现方法。 首先,让我们理解编码的基础知识。字符编码是用来表示文本的规则,常见的有ASCII、GBK(GB2312的扩展)、UTF-8等。ASCII是...
GBK、GB2312和UTF-8是三种常见的字符编码标准,每种都有其特定的应用场景和特点。C#作为.NET框架下的主要编程语言,提供了丰富的类库支持对不同编码格式之间的转换。 1. **GBK编码**:GBK是中国大陆广泛使用的汉字...
在实际应用中,GBK和UTF-8之间的转换问题常常出现,尤其是在处理不同来源的数据时。例如,GBK编码的文件可能无法在支持UTF-8的系统中正确显示,反之亦然。描述中提到的“用vs2017写的”小程序就是为了解决这个问题,...
例如,如果数据库是UTF-8,JSP是GBK,可以使用 `new String(rs.getBytes(1),"UTF-8")` 将数据库中的UTF-8字节流转换为GBK字符串。反之,如果JSP是UTF-8,数据库是GBK,需要先将GBK字符串转换为字节流,然后再次转换...
主要的过程可以分为两个步骤:首先从GBK转换到Unicode,然后从Unicode转换到UTF-8。 1. GBK转Unicode: - GBK编码中,每个字符由两个字节组成,我们可以遍历输入的GBK字符串,每次取两个字节作为GBK编码值。 - ...
标题和描述中提到的问题核心在于UTF-8和GBK编码之间的转换。 UTF-8是一种变长的Unicode编码方式,它能够表示Unicode标准中的所有字符,包括汉字。UTF-8的优势在于其兼容ASCII编码,对于英文字符和大部分编程语言中...
本文将详细介绍Unicode、ISO-8859-1、GBK和UTF-8这四种常见的字符编码,并探讨它们之间的转换方法。 #### 二、基础知识 ##### 1. Unicode Unicode是一种国际字符编码标准,旨在支持世界上几乎所有语言的文字。它为...
本文将详细介绍如何在Microsoft Foundation Classes (MFC)环境下实现GBK与UTF-8之间的编码转换。该技术适用于那些需要处理不同字符集数据的应用程序开发场景,特别是在早期Windows系统中广泛使用的MFC框架下进行编码...
使用这些资源,用户可以方便地在UTF-8和GBK之间进行文件编码的转换,解决编码不一致带来的问题,确保文本数据的正确性和可读性。对于经常处理中文文件的IT专业人士来说,理解和掌握编码转换技巧是非常必要的。
"CharsetConv"类提供了一个工具,帮助开发者在ANSI、Unicode(Little Endian和Big Endian)、UTF-8及UTF-8+BOM之间灵活转换,从而避免编码问题带来的困扰。通过深入学习和实践,开发者可以更好地应对各种编码挑战,...
"EncodeShow.exe"这个文件名可能是一个用于显示和转换这些编码的工具,它可以方便地进行Unicode、UTF-8和GBK之间的转换,同时也处理URL编码和XML转义的问题。这样的工具对于开发者来说十分实用,尤其在处理多语言...
# 从GBK转换为UTF-8 with codecs.open('GBK_file.txt', 'r', 'gbk') as gbk_file: content = gbk_file.read() with codecs.open('UTF8_file.txt', 'w', 'utf-8') as utf8_file: utf8_file.write(content) # 从UTF...
在此,我们将深入探讨UTF-8和ANSI编码的原理以及转换过程中涉及的关键知识点。 **一、UTF-8编码** UTF-8(Unicode Transformation Format - 8 bit)是一种广泛使用的变长字符编码,它能够表示Unicode字符集中的...
2. 转换函数:内部实现UTF-8到GBK的转换算法,这通常涉及对每个字符的字节序列进行解码和重新编码。 3. 输出部分:提供GBK编码的字符串或数据,可以在GBK编码环境中正常显示。 4. 错误处理:可能包含错误检测和处理...
这是因为UTF-8具有广泛的兼容性和通用性,许多系统和软件默认使用UTF-8,可以避免乱码问题,提高文件的可读性和互操作性。 批量转换通常涉及到大量文件,如文档、文本、源代码等。`convertz.rar`可能是一个包含转换...
这种工具通常会解析.class文件的元数据,将其从GBK转换为UTF-8,从而解决乱码问题。 6. **版本控制与协作**:在团队开发中,统一编码规范至关重要,避免因个人设置差异导致的冲突。在使用Git等版本控制系统时,应...
本主题主要聚焦于“编码(UTF-8 GBK等等)批量转换”,这是一项针对大量文件进行编码格式转换的功能。 首先,我们要理解两种主要的编码格式:UTF-8和GBK。UTF-8是一种国际通用的Unicode编码,支持全球几乎所有的字符...
"GB/BIG5/UTF-8 文件编码批量转换程序"就是解决这个问题的工具,它可以将GB2312(GBK)、BIG5编码的文件批量转换为UTF-8编码,确保在各种环境中正确显示文本。 3. **批量转换** 批量转换功能使得用户无需逐个文件...