java程序从外部的一个文本文件中读入一个中文字符串。结果显示乱码?请教各位转码的方法?谢谢

解决方案 »

  1.   

    看看这个 应该能对你有点帮助http://zjnubridge.blogdriver.com/zjnubridge/664574.html
      

  2.   

    可以看看这个函数:
    public String getChinese(String str)
    {
    try
    {
    String str1=str;
    // byte[] str2=str1.getBytes("ISO-8859-1");
    byte[] str2=str1.getBytes("ISO8859-1");
    String temp=new String(str2);;
    return temp;
    }
    catch(Exception e)
    {
    return null;
    }
    }
      

  3.   

    http://www.regexlab.com/zh/encoding.htm
      

  4.   

    String string;
    string = new String( string.getBytes("iso-8859-1"), "GB2312")
      

  5.   

    问题的关键不是在 "如何转码",而是在于 "从文本文件中读入":如果文件是 GB 编码,则应该:
    Reader in = new InputStreamReader(new FileInputStream("d:\\a.txt"), "GBK");而不要直接使用 FileReader。正如 kingofworl(良辰美景虚度) 所说,请参阅:
    http://www.regexlab.com/zh/encoding.htm
      

  6.   

    通过阅读http://www.regexlab.com/zh/encoding.htm的内容。现在还针对我的问题请教大家。
    我是在一个prop.properties文件中指定了一个键值对比如:
    keyword=贷款,金融风险,测试test,硬盘,搜索
    将来在java应用程序中,读入以后直接打出这个键值如下:
    ′???,?eèú·???,2aê?test,ó2?ì,???÷,′???,?eèú·???,ó2?ì,???÷
    我使用string = new String( string.getBytes("iso-8859-1"), "GB2312")转码后发现是正确的内容。
    我的问题是这样,JVM在读入的时候,肯定要经过一个字节组-->字符流的转换,在办出的时候也肯定会有个字符流-->字节流的转换。哪位给我讲讲“贷款,金融风险,测试test,硬盘,搜索”怎么变成上面的乱码的?谢谢大家!
      

  7.   

    properties 文件的 getProperty() 方法,都是按照 iso8859-1 来阅读的(也就是说:按 1字节 => 1字符 来读的)。Properties 文件的正规使用方法,是把中文使用 "\uXXXX" 的格式放入,而不是直接写中文的 GBK 字节。比如:
    featureName=Eclipse PDE \u63d2\u4ef6\u5f00\u53d1\u8005\u8d44\u6e90请搂主查阅一下 Properties 的资料。或者搂主可以使用 java.util.Properties 的 save 方法看看效果。