解决javajsp乱码的一种转换方法

    技术2022-05-20  47

    在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变为GBKpublic 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-1public 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");


    最新回复(0)