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();
}
FeedBack:
# re: java解析電話薄 VCF文件ENCODING=QUOTED-PRINTABLE編碼
# re: java解析電話薄 VCF文件ENCODING=QUOTED-PRINTABLE編碼
只有注冊用戶登錄后才能發表評論。 | ||
![]() |
||
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關文章:
|
||
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 31 | 1 | 2 | |||
3 | 4 | 5 | 6 | 7 | 8 | 9 | |||
10 | 11 | 12 | 13 | 14 | 15 | 16 | |||
17 | 18 | 19 | 20 | 21 | 22 | 23 | |||
24 | 25 | 26 | 27 | 28 | 29 | 30 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
青菜貓(孫宇)結交天下朋友,在網上吸取知識..
常用鏈接
留言簿(16)
隨筆分類
隨筆檔案
- 2013年6月 (1)
- 2013年5月 (1)
- 2011年6月 (1)
- 2010年11月 (1)
- 2010年9月 (3)
- 2010年8月 (1)
- 2010年7月 (1)
- 2010年5月 (3)
- 2009年9月 (1)
- 2008年8月 (2)
- 2008年6月 (2)
- 2008年4月 (1)
- 2007年12月 (1)
- 2007年11月 (1)
- 2007年10月 (9)
文章分類
搜索
最新評論

- 1.?re: java反射 修改靜態方法的值 setAccessible太無節操了
-
@江奕銘
寫的真受用。見識了 - --宋大傻
- 2.?re: java反射 修改靜態方法的值 setAccessible太無節操了
- 這文章寫的好!
- --江奕銘
- 3.?re: java反射 修改靜態方法的值 setAccessible太無節操了
- 這么些會個屁的
- --BBB
- 4.?re: java反射 修改靜態方法的值 setAccessible太無節操了
- jvm 加上安全管理期及相關策略即可防止。
- --zzy8811
- 5.?re: java解析電話薄 VCF文件ENCODING=QUOTED-PRINTABLE編碼
-
太感謝了!!! ~~~~(>_<)~~~~
哥已經轉換出來了。 - --ingyk