zoukankan      html  css  js  c++  java
  • 解决mysql数据库在web开发中的乱码问题

    首先,出现的乱码的原因在于编码方式不统一,主要是mysql数据库的编码方式和web项目的编码方式,只有遵循了编码方式统一的原则,才能避免产生乱码问题。

    通常项目中使用的都是UTF-8编码,因此,我们在新建数据库时,要设置默认编码方式为UTF-8,具体步骤如下:

    一、Windows环境下的mysql配置:

    进入mysql安装目录,找到my.ini或者是my-default.ini文件,在[mysqld]和[client]后面增加"default-character-set=utf8",设置mysql默认编码为utf8:

    设置后记住重启mysql服务。

    二、更改了数据库系统编码后,还需注意数据库编码,使用create database 新建数据库时,要在后面加上character set utf8 collate utf8_general_ci:

    create database mydb1 character set utf8 collate utf8_general_ci;

    collate utf8_general_ci是指定该数据库的校对规则。

    三、新建数据库表时,添加default charset utf8:

    create table mytb1

    (id varchar(20) primary key,

    name varchar(40) not null) 

    default charset utf8;


    这样,新表的编码就是UTF-8了。

    四、应用程序的编码:

    以jsp页面为例:

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

    五、应用系统与数据库系统连接的编码:

    以JDBC为例,在编写用于连接的url时,需加上相应参数:

    String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=UTF-8&amp";

    &amp;是&的转义符。

    六、在编写应用程序中,其它需要注意编码的地方:

    比如:servlet中,

    request.setCharacterEncoding("UTF-8");

    response.setCharacterEncoding("UTF-8");

    response.setContentType("text/html;charset=UTF-8");

    String value = request.getParameter("name");

    value = new String(value.getBytes("ISO8859-1"),request.getCharacterEncoding());

     

    另外,在项目建立起来后,发现的mysql乱码问题,有时很可能需要修改数据库的编码方式,除上述几个涉及到mysql的修改方式外,还需以下几个操作:

    一、部分数据表的列编码需要修改:

    使用show create table tb2时,可以看到有可能修改了数据库、数据库表的编码方式,但列的编码方式没有修改为utf8:

    因此,需要单独修改:

    alter table mytb2 change username username varchar(40) character set utf8;

    二、依次将编码不正确的列进行修改,当修改具有外键约束的列时,又会出现新的问题,mysql系统不允许修改,并抛出错误。

    因此,必须将具有外键约束的表解除约束,再进行修改,之后再重新添加约束:

    alter table mytb2 drop foreign key foreignKeyName;

    alter table mytb2 change foreignKeyName foreignKeyName varchar(40) character set utf8;

    alter table mytb2 add constraint FK_foreignKeyName foreign key(foreignKeyName) references mytb1(column_name);

    经过了上面的所有操作后,mysql乱码问题就可以解决了。

  • 相关阅读:
    android-sdk环境变量配置
    2018/08/04
    python 读取配置文件ini ---ConfigParser
    关于自动化测试框架搭建的前期考虑问题
    Jmeter中用例禁用
    Jmeter创建一个http请求
    基本的sql语法
    sql创建表格时出现乱码
    Jmeter安装
    Java环境搭建
  • 原文地址:https://www.cnblogs.com/microsoftjava/p/6861608.html
Copyright © 2011-2022 走看看