在unix下面如何将UTF-8转换成中文编码然后发送出去?
我用了new String(str.getBytes("UTF-8"),"GBK")或者new String(str.getBytes("UTF-8"))都不行!
如何实现呢?  知道的人能告诉一下吗?先谢谢了

解决方案 »

  1.   

    按理用new String(str.getBytes("UTF-8"),"GBK")应该没问题
    但如果你要在linux上显示中文,要用
    export LANG=zh_CN
      

  2.   

    但是,这里的unix只是一个中间转发的服务器,我还要转给另外一台unix服务器
    然后我用new String(str.getBytes("UTF-8"),"GBK")或者 new String(str.getBytes("UTF-8"),"ISO-8859-1")  转换,然后发送过去,还是乱码..
    怎么办?
      

  3.   

    我觉得有以下几个问题
    1.你要发送的字符串是否的确是utf-8的?
    2.对方接收时是否转码了?
    3.乱码(是在对方机上显示吧),那对方当前的语言集是什么?
      

  4.   

    呵呵 楼上的问的好,谢谢!
    我要发送的字符串确实是utf-8的,因为是从xml中解析出来的,那个xml本身的编码格式也是utf-8。
    对方接收时候没有转码。
    乱码是在对方的机器上显示的,对方是unix,用的是默认的语言集,应该是ISO-8859-1吧,我之前传过去的都收的到。
      

  5.   

    如果你以前传的都是正确的,且传送过程中没有任可问题的话,那就可能是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来执行
      

  6.   

    楼上的朋友,真感谢你帮我想办法。说不定真是java的问题。
    但是局方的网管监控是传一个utf-8编码格式的xml字符串给我解析,并不是xml文件。
    我又无法叫他去改xml串的编码。
    是解析xml字符串,那有什么好的办法呢?
      

  7.   

    还有一招,自已找资料写一个UTF-8到GBK的解码器
      

  8.   

    当然,这个方法的工作量也太大了,虽然有码表(iconv是开源的,它有C的全部源码,包括utf8转gbk的),为一小小的转换编一个大程序实在有些不值
    所以,有一个损办法:先将转过来的字串存成一临时文件,用iconv转成另一文件后再读入java
      

  9.   

    呵呵 我也想到过用这个办法   看来最后只有用这招呢
    keiy,太谢谢呢