作者del680202 (HANA)
看板java
标题[问题] big5转utf8
时间Mon Mar 24 21:15:19 2014
有试着爬过文,但是没找到解法
最近要做资料传递
但是问题是server端是utf-8的编码环境
而client是big5的编码环境
现在策略是client端统一把资料转utf-8文字传过去
我试着估狗,但是找到的答案都是用getBytes方式去转
可是我实际测试了尽管用getBytes去拿到utf-8文字
他也只是假性当作utf-8,骨子里还是big5文字
请问java有没有实际将文字编码转换的套件或API
可以将big5的中文字encoding成utf8的中文字
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.139.95
1F:推 virnux:在Server端设定用Big5读Clinet传来的资料再转成UTF-8 ? 03/24 22:03
试过...
但是问题出在他仍是big5文字,只是用utf8打包的样子
可能是source产生的时候就是big5的关系吧
假设utf8产生的中文byte array是aaa好了
big5产生的中文byte array是bbb,用getBytes("utf-8")转之後会变成ccc
虽然ccc可以解回变成bbb,但是他不是aaa...
现在是想找一个方法可以把bbb变成aaa
※ 编辑: del680202 来自: 61.230.139.95 (03/24 22:16)
2F:推 virnux:抱歉我没讲清楚 转成utf-8是指用Writer类别写入目的档案 03/24 22:26
恩.....我不知道我的方法有无错误
我client会先用getBytes("utf-8")转字串
用一个物件打包序列化後传到server
之後用BufferedWriter写到目的地
server端有指定file.encoding为utf8,不过没效果
我在试试不用getBytes转去丢好了
※ 编辑: del680202 来自: 61.230.139.95 (03/24 22:33)
3F:推 virnux:用BufferedWriter装饰OutputStreamWriter 03/24 22:44
4F:→ danny8376:getBytes拿到的是正确的啊... 你那里没写对吧 03/24 22:46
我问题没描写清楚
说细一点的话
我有一只daemon会去产生档案是big5编码
java client会去把那个档案用InputStream读进来後先转成java字串
假设是 String str = new String(inputBytes, "big5")
这时候的str在client可以正常显示没问题
之後要把str丢往server了,先经过一手转换
str = new String(str.getBytes("utf-8"))
之後server接到str用Writer写到local
不过显示出来就如上面讲的,还得经过iconv转回big5才能正常显示
※ 编辑: del680202 来自: 61.230.139.95 (03/24 22:53)
5F:推 virnux:然後在OutputStreamWriter里面指定utf-8 03/24 22:47
6F:→ virnux:另外你提到file.encoding 建议先检查双方预设的系统编码 03/24 22:50
7F:→ virnux:如果你是用System.setProperty()指定file.encoding 03/24 22:53
8F:→ virnux:那无效是很正常的 03/24 22:55
设置的方式...
java -Dfile.encoding=xxx ....
我想应该是没错....吧
也用jinfo检查过环境变数
※ 编辑: del680202 来自: 61.230.139.95 (03/24 22:57)
9F:→ ssccg:getBytes之後为什麽不直接用OutputStream写byte就好 03/25 00:28
10F:→ ssccg:预设编码是big5的话,你又new String(...)回去就错了 03/25 00:30
11F:推 jinmin88:记的之前在网路书店有用c#写过一支硬干法的转码程式 04/07 06:43
12F:→ jinmin88:原理很简单 把对照表抓下来用hash table存好後应转.. 04/07 06:45
13F:→ jinmin88:不过之前抓对照表的网站 "Unicode补完计画"好像消失了Orz 04/07 06:49