quoted-printable 编码与解码 packagejavas;importjava.io.ByteArrayOutputStream;importjava.io.UnsupportedEncodingException;publicclassTest...{publicstaticvoidmain(String[]arg)...{System.out.println(qpEncodeing("sd=fsd辰s西南地区dffdf=可耕地sdfsdff"+" "+"sdfsd "+"可耕地zz"));System.out.println(qpDecoding(qpEncodeing("sd=fsd辰s西南地区dffdf=可耕地sdfsdff"+" "+"sdfsd "+"可耕地zz")));}/***//***quoted-printable编码就是这个方法*/publicstaticStringqpEncodeing(Stringstr)...{char[]encode=str.toCharArray();StringBuffersb=newStringBuffer();for(inti=0;i<encode.length;i++)...{if((encode[i]>='!')&&(encode[i]<='~')&&(encode[i]!='=')&&(encode[i]!=' '))...{sb.append(encode[i]);}elseif(encode[i]=='=')...{sb.append("=3D");}elseif(encode[i]==' ')...{sb.append("= ");}else...{StringBuffersbother=newStringBuffer();sbother.append(encode[i]);Stringss=sbother.toString();byte[]buf=null;try...{buf=ss.getBytes("utf-8");}catch(UnsupportedEncodingExceptione)...{e.printStackTrace();}if(buf.length==3)...{for(intj=0;j<3;j++)...{Strings16=String.valueOf(Integer.toHexString(buf[j]));//抽取中文字符16进制字节的后两位,也就是=E8等号后面的两位,//三个代表一个中文字符charc16_6;charc16_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);}}}}returnsb.toString();}/***//***quoted-printable解码**@authorissuesr*@paramstr*@return无*@date2007-6-24*/publicfinalstaticStringqpDecoding(Stringstr)...{if(str==null)...{return"";}try...{StringBuffersb=newStringBuffer(str);for(inti=0;i<sb.length();i++)...{if(sb.charAt(i)==' '&&sb.charAt(i-1)=='=')...{//解码这个地方也要修改一下//sb.deleteCharAt(i);sb.deleteCharAt(i-1);}}str=sb.toString();byte[]bytes=str.getBytes("US-ASCII");for(inti=0;i<bytes.length;i++)...{byteb=bytes[i];if(b!=95)...{bytes[i]=b;}else...{bytes[i]=32;}}if(bytes==null)...{return"";}ByteArrayOutputStreambuffer=newByteArrayOutputStream();for(inti=0;i<bytes.length;i++)...{intb=bytes[i];if(b=='=')...{try...{intu=Character.digit((char)bytes[++i],16);intl=Character.digit((char)bytes[++i],16);if(u==-1||l==-1)...{continue;}buffer.write((char)((u<<4)+l));}catch(ArrayIndexOutOfBoundsExceptione)...{e.printStackTrace();}}else...{buffer.write(b);}}returnnewString(buffer.toByteArray(),"UTF-8");}catch(Exceptione)...{e.printStackTrace();return"";}}}