使用FileUpload上傳表單時,如何解決中文亂碼問題

使用FileUpload上傳表單時,常常會遇到中文亂碼,解決這個問題要分兩部分設置,一個是上傳的文件路徑,另一個是文件以外的表單項。具體操作如下:

ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);

fileUpload.setHeaderEncoding(encoding);

這個只對上傳的文件資源的中文名亂碼有效,但是對於表單字段的中文亂碼無法解決,其實FileItem接口中有另外一個重載的方法:getString(String charset)。該方法可以按照指定的編碼格式,獲得表單項字段的內容,它的定義爲:

public String getString(String charset) throws UnsupportedEncodingException {

    return new String(this.get(), charset);

}

因此​​​​​​,我們可以按如下步驟解決中文亂碼問題:

1、在上傳的servlet中取得request的編碼格式:

  String encoding=request.getCharacterEncoding();  /

     也可以不寫這步,直接指定編碼格式:“UTF-8”或“GBK”
2.解決上傳文件的路徑亂碼問題:
  ServletFileUpload sfu = new ServletFileUpload(factory);之後加上:
  sfu.setHeaderEncoding(encoding);
3:解決表單字段的亂碼:
  String(fileItem.getString(encoding));
比如其中一項表單:
  String id1 = fileItem.getString(encoding);

以此類推。

    注意:調用String getString(String charset)方法時需要進行異常處理。

4:這時候,如果還有問題,就可能是tomcat的配置問題了,找到server.xml,尋找到如下字段模仿修改即可
  <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
      redirectPort="8443" URIEncoding="UTF-8"/>
這幾步完成後,亂碼問題就徹底擺脫掉了~~~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章