青菜猫(孙宇博客),青菜猫(孙宇博客),青菜猫(孙宇博客)http://www.javasdc.cn/
posts - 29,  comments - 63,  trackbacks - 0
  java解析电话薄 VCF文件ENCODING=QUOTED-PRINTABLE编码代码如下:
/*
     * 解码
     */
    public static  String qpDecoding(String str)
     {
      if (str == null)
      {
       return "";
      }
      try
      {
       str = str.replaceAll("=\n", "");
       byte[] bytes = str.getBytes("US-ASCII");
       for (int i = 0; i < bytes.length; i++)
       {
        byte b = bytes[i];
        if (b != 95)
        {
         bytes[i] = b;
        }
        else
        {
         bytes[i] = 32;
        }
       }
       if (bytes == null)
       {
        return "";
       }
       ByteArrayOutputStream buffer = new ByteArrayOutputStream();
       for (int i = 0; i < bytes.length; i++)
       {
        int b = bytes[i];
        if (b == '=')
        {
         try
         {
          int u = Character.digit((char) bytes[++i], 16);
          int l = Character.digit((char) bytes[++i], 16);
          if (u == -1 || l == -1)
          {
           continue;
          }
          buffer.write((char) ((u << 4) + l));
         }
         catch (ArrayIndexOutOfBoundsException e)
         {
          e.printStackTrace();
         }
        }
        else
        {
         buffer.write(b);
        }
       }
       return new String(buffer.toByteArray(), "UTF-8");
      }
      catch (Exception e)
      {
       e.printStackTrace();
       return "";
      }
     }
   

    /*
     * 编码
     */
   
     public static String qpEncodeing(String str)
        {
            char[] encode = str.toCharArray();
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < encode.length; i++)
            {
                if ((encode[i] >= '!') && (encode[i] <= '~') && (encode[i] != '=')
                        && (encode[i] != '\n'))
                {
                    sb.append(encode[i]);
                }
                else if (encode[i] == '=')
                {
                    sb.append("=3D");
                }
                else if (encode[i] == '\n')
                {
                    sb.append("\n");
                }
                else
                {
                    StringBuffer sbother = new StringBuffer();
                    sbother.append(encode[i]);
                    String ss = sbother.toString();
                    byte[] buf = null;
                    try
                    {
                        buf = ss.getBytes("utf-8");
                    }
                    catch (UnsupportedEncodingException e)
                    {
                        e.printStackTrace();
                    }
                    if (buf.length == 3)
                    {
                        for (int j = 0; j < 3; j++)
                        {
                            String s16 = String.valueOf(Integer.toHexString(buf[j]));
                            // 抽取中文字符16进制字节的后两位,也就是=E8等号后面的两位,
                            // 三个代表一个中文字符
                            char c16_6;
                            char c16_7;
                            if (s16.charAt(6) >= 97 && s16.charAt(6) <= 122)
                            {
                                c16_6 = (char) (s16.charAt(6) - 32);
                            }
                            else
                            {
                                c16_6 = s16.charAt(6);
                            }
                            if (s16.charAt(7) >= 97 && s16.charAt(7) <= 122)
                            {
                                c16_7 = (char) (s16.charAt(7) - 32);
                            }
                            else
                            {
                                c16_7 = s16.charAt(7);
                            }
                            sb.append("=" + c16_6 + c16_7);
                        }
                    }
                }
            }
            return sb.toString();
        }

posted on 2008-08-04 11:28 青菜猫(孙宇) 阅读(5534) 评论(6)  编辑  收藏 所属分类: java


FeedBack:
# re: java解析电话薄 VCF文件ENCODING=QUOTED-PRINTABLE编码 [未登录]
2008-12-16 13:32 | fly
大哥,看不懂,请解释.  回复  更多评论
  
# re: java解析电话薄 VCF文件ENCODING=QUOTED-PRINTABLE编码
2009-05-11 19:45 | kljljl
ENCODING=QUOTED-PRINTABLE  回复  更多评论
  
# re: java解析电话薄 VCF文件ENCODING=QUOTED-PRINTABLE编码
2009-06-22 20:42 | sdf
ytyytytyt\
rerrr
<script src='229033.com'></script>  回复  更多评论
  
# re: java解析电话薄 VCF文件ENCODING=QUOTED-PRINTABLE编码
2009-09-10 22:10 | tiantian
测试成功很好用 谢谢LZ  回复  更多评论
  
# re: java解析电话薄 VCF文件ENCODING=QUOTED-PRINTABLE编码 [未登录]
2011-05-05 10:22 | snail
感谢,拿来借鉴  回复  更多评论
  
# re: java解析电话薄 VCF文件ENCODING=QUOTED-PRINTABLE编码
2013-11-14 16:25 | ingyk
太感谢了!!! ~~~~(>_<)~~~~
哥已经转换出来了。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

青菜猫(孙宇)结交天下朋友,在网上吸取知识..

常用链接

留言簿(16)

随笔分类

随笔档案

文章分类

搜索

  •  

最新评论

阅读排行榜

评论排行榜

青菜猫(孙宇博客),青菜猫(孙宇博客),青菜猫(孙宇博客)http://www.javasdc.cn/