在unix下面如何将UTF-8转换成中文编码?

smilesfly 2006-01-12 01:09:54
在unix下面如何将UTF-8转换成中文编码然后发送出去?
我用了new String(str.getBytes("UTF-8"),"GBK")或者new String(str.getBytes("UTF-8"))都不行!
如何实现呢? 知道的人能告诉一下吗?先谢谢了
...全文
616 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
smilesfly 2006-01-12
  • 打赏
  • 举报
回复
呵呵 我也想到过用这个办法 看来最后只有用这招呢
keiy,太谢谢呢
柯本 2006-01-12
  • 打赏
  • 举报
回复
当然,这个方法的工作量也太大了,虽然有码表(iconv是开源的,它有C的全部源码,包括utf8转gbk的),为一小小的转换编一个大程序实在有些不值
所以,有一个损办法:先将转过来的字串存成一临时文件,用iconv转成另一文件后再读入java
柯本 2006-01-12
  • 打赏
  • 举报
回复
还有一招,自已找资料写一个UTF-8到GBK的解码器
smilesfly 2006-01-12
  • 打赏
  • 举报
回复
楼上的朋友,真感谢你帮我想办法。说不定真是java的问题。
但是局方的网管监控是传一个utf-8编码格式的xml字符串给我解析,并不是xml文件。
我又无法叫他去改xml串的编码。
是解析xml字符串,那有什么好的办法呢?
柯本 2006-01-12
  • 打赏
  • 举报
回复
如果你以前传的都是正确的,且传送过程中没有任可问题的话,那就可能是java本身的问题了,以前就碰到过此类问题(JAVA有时转码会不正确)
在windows下:
msg = new String(msg.getBytes("GB2312"), "UTF-8");
System.out.println(msg);//乱码,这个正常,因为windwos的console不支持UTF-8
msg = new String(msg.getBytes("UTF-8"), "GB2312");
System.out.println(msg);//乱码,转不回来了
目前还没有找到好的方法
如果你实在找不到好的解决方案,可将你的xml用unix的iconv转成GBK的,格式如下:
iconv -f UTF-8 -t CN-GB -o new.xml old.xml
可用java的Runtime.getRuntime().exec来执行
smilesfly 2006-01-12
  • 打赏
  • 举报
回复
呵呵 楼上的问的好,谢谢!
我要发送的字符串确实是utf-8的,因为是从xml中解析出来的,那个xml本身的编码格式也是utf-8。
对方接收时候没有转码。
乱码是在对方的机器上显示的,对方是unix,用的是默认的语言集,应该是ISO-8859-1吧,我之前传过去的都收的到。
柯本 2006-01-12
  • 打赏
  • 举报
回复
我觉得有以下几个问题
1.你要发送的字符串是否的确是utf-8的?
2.对方接收时是否转码了?
3.乱码(是在对方机上显示吧),那对方当前的语言集是什么?
smilesfly 2006-01-12
  • 打赏
  • 举报
回复
但是,这里的unix只是一个中间转发的服务器,我还要转给另外一台unix服务器
然后我用new String(str.getBytes("UTF-8"),"GBK")或者 new String(str.getBytes("UTF-8"),"ISO-8859-1") 转换,然后发送过去,还是乱码..
怎么办?
柯本 2006-01-12
  • 打赏
  • 举报
回复
按理用new String(str.getBytes("UTF-8"),"GBK")应该没问题
但如果你要在linux上显示中文,要用
export LANG=zh_CN
stone_lee 2006-01-12
  • 打赏
  • 举报
回复
我也想了解,帮你顶。
smilesfly 2006-01-12
  • 打赏
  • 举报
回复
大家帮帮忙啊~~~~~~~~~~~
smilesfly 2006-01-12
  • 打赏
  • 举报
回复
有人知道么?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧