笨笨向前冲吧 关注:24贴子:1,512
  • 2回复贴,共1

【软件应用】Java字符串转码

只看楼主收藏回复

Java开发的一个比较麻烦的问题就是字符串需要转码,主要出现在中日韩等方块文字上,或是这些文字在跨系统的时候,比较的讨厌。
现在介绍几个在实际应用中遇到的问题,不全,陆续补充


1楼2008-08-21 09:09回复
    1 转码的共同方法 (转)

    /**
     * 字符串编码转换的实现方法
     * @param str 待转换编码的字符串
     * @param newCharset 目标编码
     * @return
     * @throws UnsupportedEncodingException
     */
     public String changeCharset(String str, String newCharset)
     throws UnsupportedEncodingException {
     if (str != null) {
     //用默认字符编码解码字符串。
     byte[] bs = str.getBytes();
     //用新的字符编码生成字符串
     return new String(bs, newCharset);
     }
     return null;
     }
     /**
     * 字符串编码转换的实现方法
     * @param str 待转换编码的字符串
     * @param oldCharset 原编码
     * @param newCharset 目标编码
     * @return
     * @throws UnsupportedEncodingException
     */
     public String changeCharset(String str, String oldCharset, String newCharset)
     throws UnsupportedEncodingException {
     if (str != null) {
     //用旧的字符编码解码字符串。解码可能会出现异常。
     byte[] bs = str.getBytes(oldCharset);
     //用新的字符编码生成字符串
     return new String(bs, newCharset);
     }
     return null;
     }


    2楼2008-08-21 09:10
    回复

      2 转码的时机

      有的时候跨系统很诡异,明明读取的文件和要写入的文件都是相同的编码,但是就会出现乱码,或是有的普通字变成“?”等,这个时候,可以在读取文件的时候就转码,是读取文件流的时候转,不是把文件读取后的字符串转。 具体如下:

      BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "GB2312"));

       while ((str= br.readLine()) != null) {

       System.out.println(str);
       }


      4楼2008-08-21 09:16
      回复