jsp 数据库 乱码

需要文字编码转换  
  你可以在没有往数据库中添加之前在页面中print出来看看是不是乱码  
  试一试这个函数  
  public   String   getChinese(String   str){  
  try{  
  String   str1=str;  
  byte[]   str2=str1.getBytes("ISO8859-1");  
                          String   temp=str2.toString();  
  return   temp;  
  }  
  catch(Exception   e)  
  {  
  }  
  return   "Null";  
  }
Top
  userName   =   request.getParameter("textfield");  
  String   password   =   request.getParameter("textfield2");  
  String   email   =   request.getParameter("select");  
  userName   =   new   String(userName.getBytes("8859_1"),"gb2312");  
  password   =   new   String(password.getBytes("8859_1"),"gb2312");  
  email   =   new   String(email.getBytes("8859_1"),"gb2312");  
 
<%@ page contentType="text/html;charset=GB2312" %>
request.setCharacterEncoding("GBK");


关于jsp 程序开发中的乱码问题

 

经过一天的探索,终于把乱码问题解决了,心里舒畅了不少。

 

现将解决办法总结一下,希望对大家有所帮助。

以下为我的一个页面中的部分编码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ page import="java.sql.*" import="java.lang.*" %>

<%@page  contentType="text/html; charset=UTF-8"%>

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<title>

</title>

</head>

<body>

<%

request.setCharacterEncoding("UTF-8");

%>

 

</body>

</html>

 

    我所有的页面的编码统一都是UTF-8(请注意UTF-8的写法,一定要严格大小写)。

    1:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

这句话是设定jsp 页面的编码,如果是在IDE(如eclipse 或者netbeans)文件的格式会自动保存为UTF-8  格式,如果你用的是文本编辑器的话它默认的是ANSI编码,你需要将文件另存为UTF-8 格式的。

    2:<%@page  contentType="text/html; charset=UTF-8"%>

 

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

  有了这两名声明,在本页面中的信息就一般不会出现乱码了。

    3:表单提交过程中的乱码。

  声明<%

request.setCharacterEncoding("UTF-8");

%>

 

由于request 默认的是ISO8859-1 编码,所以在处理表单提交的内容并插入数据库就会出现乱码,声明一下就不用再转换了。

4:数据库乱码:

  安装数据库的时候,设置默认编码为UTF-8

 

 

创建表结构时声明:

 

CREATE TABLE `user` (

  `id` int(11) NOT NULL auto_increment,

  `username` varchar(50) NOT NULL,

  `password` varchar(100) NOT NULL,

  `studentid` varchar(50) NOT NULL,

  `truename` varchar(100) NOT NULL,

  `email` varchar(100) NOT NULL,

  PRIMARY KEY  (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

声明DEFAULT CHARSET=utf8;(注意在数据中utf8 应该这样写)。

 

 

  连接数据库时声明采用UTF-8 编码:

  如我的连接mysql 数据库时

 

<%

   Class.forName("org.gjt.mm.mysql.Driver").newInstance();

   String url="jdbc:mysql://localhost/demo?user=root&password=root&useUnicode=true&characterEncoding=UTF-8";

   Connection conn=DriverManager.getConnection(url);

   Statement stmt=conn.createStatement();

 %>

 

useUnicode=true&characterEncoding=UTF-8,即声明采用UTF-8 编码。

 

总结:

 

原则上是所有的编码统一使用一个,数据为中的编码和jsp  页面上的编码写法不一样(UTF-8 与utf-8).

做到以上几点,乱码问题解决!

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在使用 Servlet 写入数据库时出现乱码,可能是由于编码不统一所导致的。可以尝试以下解决方法: 1. 确认数据库及表的字符集编码是否与项目编码一致,可以使用以下 SQL 语句查询: ``` SHOW CREATE DATABASE database_name; SHOW CREATE TABLE table_name; ``` 如果字符集编码不一致,可以通过修改数据库或表的字符集编码来解决。 2. 在 JDBC 连接字符串中设置编码,例如: ``` jdbc:mysql://localhost:3306/database_name?useUnicode=true&characterEncoding=UTF-8 ``` 3. 在 Servlet 中设置请求和响应的编码,例如: ```java request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); ``` 4. 在向数据库中写入数据之前,对数据进行编码转换,例如: ```java String data = request.getParameter("data"); byte[] bytes = data.getBytes("ISO-8859-1"); data = new String(bytes, "UTF-8"); ``` 如果以上方法无法解决问题,可以考虑使用第三方库,如 Apache Commons FileUpload 和 Apache Commons IO,来处理数据编码和文件上传等问题。 ### 回答2: 当servlet写入数据库时出现乱码的情况,可能是由于以下原因导致的: 1. 数据库字符编码不匹配:数据库的字符编码与servlet程序使用的字符编码不一致,导致数据写入时出现乱码。解决方法是确保数据库和servlet程序使用相同的字符编码,比如都使用UTF-8编码。 2. 请求参数编码问题:在servlet程序中,获取请求参数时未指定正确的字符编码,导致获取到的参数值存在乱码。可以在servlet程序中显式设置请求参数的字符编码,如设置request.setCharacterEncoding("UTF-8")。 3. 数据插入操作编码设置问题:在servlet中执行数据库插入操作时,未明确指定插入数据的字符编码,导致插入的数据乱码。可以在插入数据之前,设置数据库连接的字符编码,如设置连接的字符编码为UTF-8。 4. 数据库字段类型问题:数据库中存储数据的字段类型不是文本类型(如VARCHAR),而是二进制类型(如BLOB或BINARY),导致写入的数据无法正确解析并显示。此时需要修改数据库表结构,将对应字段的类型修改为文本类型。 综上所述,解决servlet写入数据库乱码的问题需要对数据库和servlet程序的字符编码进行统一,并确保正确处理请求参数和设置数据库连接的字符编码,同时注意数据库表结构中数据字段的类型是否正确。 ### 回答3: 当Servlet写入数据库时出现乱码问题,主要原因是由于字符编码不匹配导致的。 解决这个问题可以参考以下方法: 1. 在Servlet中设置字符编码:在Servlet的doPost或doGet方法中,使用HttpServletRequest对象的setCharacterEncoding方法设置字符编码,例如: request.setCharacterEncoding("UTF-8"); 2. 在JSP页面中设置字符编码:在JSP页面的头部添加meta标签,指定编码方式,例如: <meta charset="UTF-8"> 3. 数据库连接设置编码方式:在连接数据库时,指定数据库的编码方式为UTF-8,例如MySQL数据库连接字符串如下: jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8 4. 保证数据库表的编码方式与连接编码方式一致:检查数据库表的编码方式与连接编码方式是否一致,确保它们都使用相同的字符编码,例如UTF-8。 5. 对要写入数据库的数据进行编码转换:在将数据写入数据库之前,先将其进行编码转换,保证与数据库的编码方式一致,使用java.net.URLEncoder.encode()方法进行编码转换。 通过以上方法,可以解决Servlet写入数据库时出现乱码问题。如果还存在乱码问题,可以进一步检查数据库和服务器的配置,确保它们的字符编码设置正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值