数据库、表、表字段、服务器代码、服务器文件、浏览器显示的编码要统一。
建库建表时指定编码:
创建数据库时指定库编码:
create database databaseName default character set utf8 collate utf8_general_ci;
创建表时指定表编码:
create table tableName( id int(32) primary key not null )default charset=utf8;
创建表时指定表字段编码:
create table tableName( id int(32) primary key not null, `code` varchar(128) unique not null character set utf8 collate utf8_general_ci )default charset=utf8;
当库和表的编码都设置后,表字段编码可以不用设置,反正我是这样理解的,不设置就默认使用表设置的编码。
mysql设置编码命令
注意:以下命令只在当前连接下有效,当重启数据库或新开连接后失效。想一劳永逸请在mysql配置文件中配置默认编码。
set character_set_client = utf8;
set character_set_connection = utf8;
set character_set_database = utf8;
set character_set_results = utf8;/*这里要注意很有用*/
set character_set_server = utf8;
set collation_connection = utf8_bin;
set collation_database = utf8_bin;
set collation_server = utf8_bin;
mysql配置文件中配置默认编码
1、中止MySQL服务
2.1(Linux)、在/etc/下找到my.cnf,如果没有就把mysql的安装目录下的support-files目录(有的linux是安装目录的根目录)下的my-medium.cnf(或是my-large.cnf)复制到/etc/下并改名为my.cnf即可,这个步骤不同Linux版本会对应不用的目录和文件名。
2.2(Windows)、在安装根目录下找到my.ini,不可能没有。
3、打开my.cnf(或my.ini)以后修改成以下:
[client]
default-character-set=utf8 [mysqld] #set the default character set. character-set-server=utf8 init_connect='SET NAMES utf8' [mysqld_safe] default-character-set=utf8 [mysql] default-character-set=utf8
4、启动MySQL服务
连接数据库设置编码
jdbc:mysql://127.0.0.1:3306/test_db?useUnicode=true&characterEncoding=utf8
注意以上代码如果写在xml中由于&是xml中的字符实体,所以需要将&改成&
jdbc:mysql://127.0.0.1:3306/test_db?useUnicode=true&characterEncoding=utf8
服务器代码和文件设置编码
设置文件编码
首先,如果需要将所有文件的编码设置成utf-8,特别时在windows下经常出现此类乱码问题。
特别注意,这里说的是文件编码,你在代码里是设置不了的,只能通过外部来更改。
这里以eclipse为例:
python
# -*- coding: utf-8 -*-
jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
浏览器显示编码
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
java与mysq编码对应关系
java中的常用编码UTF-8、GBK、GB2312、ISO-8859-1,对应mysql数据库中的编码utf8、gbk、gb2312、latin1。