java调用接口返回utf8,我用gbk格式的java文件获取的中文部分是乱码。

一个网络接口返回的是一个utf8编码格式的xml。我用utf8格式的java文件调用接口,获取的中文字符是完全没有问题的。但是我用gbk格式的java文件调用接口,并进行如下处理,中文字符部分正确,部分乱码,求解答!如果想要看源码,请参考百度语音识别接口中的java例子。
stringSrc = URLEncoder.encode(stringSrc , "GBK"); //stringSrc 就是调用网络接口返回的内容
stringSrc = URLDecoder.decode(stringSrc , "UTF-8");
System.out.println("stringSrc ="+stringSrc );//["百度语音提供????支持??],正确的内容是:[百度语音提供技术支持,"]
现在有点混乱了,按照最开始的想法是:接口返回utf8,但是转换成字符串时,因为文件是gbk,所以字符串就已经被gbk解码了一次。所以我逆过程回去,肯定是没问题的啊,因为结果确实含有正常中文,事实证明我的理解是对的,可是可是可是啊,怎么还有部分乱码了呢?
求高手帮忙消除困惑,先谢过大家了。

Java内部都是用Unicode编码

你说的utf8格式的java文件,是代码的编码方式,与内部存储无关
所以你用GBK编码,用UTF-8解码,是乱码很正常追问

那是java内部的事,你有遇到过Unicode编码乱码吗?你再好好理解一下我的描述,跟你说的没有关系。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-13
返回的是utf8编码格式中文,要先 uft8解码为字节流,再用 gbk 编码,后面才能用 gbk 解码
第2个回答  2018-04-23
请问解决了吗,我也在找这个解决方式,因为gbk是2个字节的,utf-8是3个字节,在过来的时候就发生了丢失数据,所以想着应该只能通过UTF-8去接受,避免它的默认转码,但是后面就不懂了
相似回答