1. 程式人生 > >MySQL設定編碼和專案中如何統一編碼

MySQL設定編碼和專案中如何統一編碼

資料庫、表、表字段、伺服器程式碼、伺服器檔案、瀏覽器顯示的編碼要統一。

建庫建表時指定編碼:

建立資料庫時指定庫編碼:

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。