使用common upload中文字符乱码

我使用 FileItem item 里面的getString()方法想要得到表单字段的值结果老是乱码。

搞了一个下午没搞懂 ,我尝试了 把得到的字符串转GBK UTF-8 GB2312都无结果。

 

最终我下载了FileItem的类 查看了getString()方法 如下:

Java代码   收藏代码
  1. public String getString() {  
  2.     byte[] rawdata = get();  
  3.     String charset = getCharSet();  
  4.     if (charset == null) {  
  5.         charset = DEFAULT_CHARSET;  
  6.     }  
  7.     try {  
  8.         return new String(rawdata, charset);  
  9.     } catch (UnsupportedEncodingException e) {  
  10.         return new String(rawdata);  
  11.     }  
  12. }  

 偶原来里面有个DEFAULT_CHARSET

Java代码   收藏代码
  1. public static final String DEFAULT_CHARSET = "ISO-8859-1";  

 

气死我了 我就说怎么转换不起嘛 呜呜。

这下这么来转一下就可以了:

Java代码   收藏代码
  1. value = item.getString();  
  2. String words = new String(value.getBytes("iso-8859-1"),"UTF-8");  

 

 

再仔细看看源码 原来里面还提供了一个getString的重载方法

Java代码   收藏代码
  1. public String getString(final String charset)  
  2.         throws UnsupportedEncodingException {  
  3.         return new String(get(), charset);  
  4.     }  

 

哎悲剧呀。。。


你可能感兴趣的:(java,upload,null,byte)