解决java/jsp乱码的一种转换方法
2011-02-26 22:31
357 查看
在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");
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");
相关文章推荐
- 解决java/jsp乱码的一种转换方法
- 解决java/jsp乱码的一种转换方法
- JSP传递参数中文乱码问题的一种解决方法
- 从JSP WEB页面往数据库写入出现乱码的一种解决方法
- java/jsp乱码的一种转换方法
- jsp form之间传递数据存在乱码的解决方法
- JSP里面向数据库里面插入数据时出现乱码的解决方法
- jsp地址栏传中文显示乱码解决方法
- jsp 页面传值 到后台 中文乱码解决方法
- 关于JSP乱码问题及解决方法
- Java/JSP中文乱码问题解决心得
- JSP 汉字乱码解决方法-摘自百度知道
- MyEclipse和tomcat结合编写jsp对于中文乱码的解决方法
- JSP带中文请求参数乱码的解决方法
- jsp通过include指令引入html乱码的解决方法
- Java/JSP中文乱码问题解决心得
- 【已解决】对JSP页面传值中文乱码的简单解决方法
- JSP乱码问题及解决方法
- JSP中文乱码问题解决方法详解