作者hagai0407 (阿丐哦哪个丐)
看板java
标题[问题] 编码转换问题(BIG5转UTF8)
时间Sat Jan 14 13:19:01 2017
各位前辈午安,最近在制作专案时遇到编码转换问题...
详情如下:
本身的servlet要呼叫一支API,而该api会回传xml格式字串,
但对方API的系统编码是BIG5,而我的系统是UTF8......
不知道是不是因为这个原因导致回传字串的中文部分变成很多菱形的乱码,
爬文结果多半与getByte function有关,
但试了相关的语法只让菱形变成问号而已。
请问各位大大能否提供类似问题的解法? 感激不尽QQQ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.164.56.101
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1484371143.A.F40.html
1F:推 icydream: 在读对方资料时 先用big5,接着再用utf8来编码 01/14 14:58
2F:→ ssccg: String是没有编码的(先不管怎麽存在记忆体的),重点要放在 01/14 15:45
3F:→ ssccg: binary资料的编码,对方系统编码是BIG5,代表的是对方传出 01/14 15:45
4F:→ ssccg: 时是String → byte[] (BIG5编码),所以你在收资料时,取得 01/14 15:47
5F:→ ssccg: byte[]後直接用BIG5解码回String就好,跟你自己的UTF-8没关 01/14 15:47
6F:→ ssccg: 如果是先读byte[]再转String就是new String时设定 01/14 15:48
7F:→ ssccg: 如果是用Reader读Stream,那就是设Reader的编码 01/14 15:48
8F:→ ssccg: 你会菱形又变问号大概是两个编码不懂状况转来转去,不要想 01/14 15:51
9F:→ ssccg: 太复杂... 01/14 15:53
10F:推 LPH66: Java 处理编码事情已经很单纯了, byte[] 就是外界编码 01/14 18:23
11F:→ LPH66: 转成 String 需要提供编码, 它就会变成 Unicode 字串 01/14 18:24
12F:→ LPH66: 要再送出去时再变回 byte[], 这里也要再给一次编码 01/14 18:24
13F:→ LPH66: 至於你的系统是 UTF-8 这件事和 Java 无关 01/14 18:24