跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Java 字符集转换问题,求助
未分類
6 4 月 2021

Java 字符集转换问题,求助

Java 字符集转换问题,求助

資深大佬 : wenlongde 3

命令行:

curl ‘http://192.168.1.1:9040/S041’ | iconv -f gbk -t utf8

可以得到正常的结果,符合预期

java 代码: new String(retStr.getBytes(Charset.forName(“GBK”)), Charset.forName(“UTF-8”)); 得到的是乱码,什么原因呢?

大佬有話說 (5)

  • 主 資深大佬 : wenlongde

    接口返回的是含有中文字符的 GBK 编码的报文

  • 資深大佬 : ychost

    你写错了,GBK -> UTF8 这样写

    new String(str.getBytes(“UTF-8″),”UTF-8”);

    注:只需要写目标编码,原始编码可忽略
    可以参考: https://github.com/jinpang/Android/blob/master/Java%20%E6%AD%A3%E7%A1%AE%E7%9A%84%E5%81%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%BC%96%E7%A0%81%E8%BD%AC%E6%8D%A2

  • 資深大佬 : iamlbk

    `new String(retStr.getBytes(Charset.forName(“GBK”)), Charset.forName(“UTF-8”));`
    retStr 应该已经有问题了, 在接收结果的地方处理编码问题

    还有一种方式可以尝试下(UTF-8 是接收编码):
    `new String(retStr.getBytes(Charset.forName(“UTF-8”)), Charset.forName(“GBK”));`

  • 資深大佬 : cheng6563

    Java 的 String 内部编码是 UTF-16 。
    HTTP 数据接收转字符串的时候会进行一次转码,默认由 -​Dfile.encoding 指定的编码转,没有指定 -​Dfile.encoding 就会预定义一个编码,Windows 系统一般为 GBK 。
    这时如果用错编码就可能会造成数据丢失得到一个不完整的 String,这时再转换编码也没用了。

  • 資深大佬 : dallaslu

    字符乱码说明

    https://twitter.com/Linmiv/status/1336573220665737216

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具