解決java/jsp亂碼的一種轉換方法

來源:互聯網
上載者:User
解決java/jsp亂碼的一種轉換方法

其實,亂碼問題困惑著很多人。網上也有很多文章介紹亂碼的處理問題。

很多人從網上找到亂碼解決問題後,就試可是還是解決不了。往往是沒有對症下藥。

在jsp中,本人知識薄弱目前只知道有三種原因會有中文亂碼的出現。找到了原因這才能對症下藥。
1.jsp的contentType 的設定
  <%@page contentType="text/html;charset=GB2312"%>

2.一個就是某些包中的類對中文沒有良好的支援。就比如說我剛剛用的上傳的一個包,這個包中的類對中文支援就是不好,顯示在網頁中的中文全部是???????。後來當我從這個包的類裡取出的資料都用了new String(file_item.getName().getBytes("iso8859-1"),"GBK"))就解決了問題。
如:
<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="org.apache.commons.fileupload.DiskFileUpload, org.apache.commons.fileupload.FileItem" %>
<%
if("POST".equalsIgnoreCase(request.getMethod()) && request.getContentType().startsWith("multipart/form-data")) {
DiskFileUpload upload = new DiskFileUpload();
  java.util.List files = upload.parseRequest(request);//取得表單
  FileItem file_item;
  for(int i=0; i< files.size(); i++) {//迴圈得出表單中的元素,這裡為了看是否id有值可取出dbms_phsgame
    file_item = (FileItem)files.get(i);
    //如果有id元素,就從資料庫中取出dbms_phsgame
    if("file".equalsIgnoreCase(file_item.getFieldName())) {
      out.println(new String(file_item.getName().getBytes("iso8859-1"),"GBK"));
    }
 }
}
%>
<html>
<body>
  <form name="form1" enctype="multipart/form-data" method="post" action="">
      <input type="file" name="file">
    <input type="submit" name="Submit" value="提交">
  </form>
</body>
</html>

3.資料庫資料本身就是亂碼。

這裡推薦一個辦法---就是getBytes()的方法

//用於讀資料庫時由iso8859-1變為GBK
public String GBKConverter(String s_string){
try{
String des = new String(s_string.getBytes("iso8859-1"),"GBK");
return des;
}
catch(Exception ex){
String des="";
return des;
}
}
//用於處理頁內產生的中文資料在寫入資料庫時的處理,由GBK變為iso8859-1
public String ISOConverter(String s_string){
try{
String des  =  new String(s_string.getBytes("GBK"),"iso8859-1");
return des;
}
catch(Exception ex){
String des = "";
return des
}
}

BTW:
<%@ page contentType="text/html;charset=gb2312" %>
一定有, 而且要在檔案首行(不能在include檔案中)

還有, 如果不能正確解析表單內容, 加這一句:

request.setCharacterEncoding("gb2312");

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.