日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MySql默认编码所造成的乱码麻烦1.222

發布時間:2023/12/2 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySql默认编码所造成的乱码麻烦1.222 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、前言

? ? MySQL在安裝時,最后的一步,會讓你選擇MySQL服務器及客戶端、數據庫、連接接口的默認編碼。通常可選擇

UTF8和GB2312.

? ? 但是,如果你選擇了utf8的時候,恰好你要從另一個數據庫上遷移一個gb2312編碼格式的數據庫過來,且那個系統的前端和后端都是gb2312編碼的時候,直接新建數據庫,導入數據恐怕會產生亂碼了。

2、安裝MySQL之后修改編碼方式

? ? ? ?MySQL的默認編碼是Latin1,不支持中文,要支持中午需要把數據庫的默認編碼修改為gbk或者utf8 ? ? ??1、需要以root用戶身份登陸才可以查看數據庫編碼方式(root用戶身份登陸的命令為:
? ? ? >mysql -u root –p,之后兩次輸入root用戶的密碼),查看數據庫的編碼方式命令為:

? ?>show variables like 'character%'; 或者 > status +--------------------------+----------------------------+? | Variable_name | Value |? +--------------------------+----------------------------+? | character_set_client | latin1 |? | character_set_connection | latin1 |? | character_set_database | latin1 |? | character_set_filesystem | binary |? | character_set_results | latin1 |? | character_set_server | latin1 |? | character_set_system | utf8 |? | character_sets_dir | /usr/share/mysql/charsets/ |? +--------------------------+----------------------------+

從以上信息可知數據庫的編碼為latin1,需要修改為gbk或者是utf8

其中,character_set_client為客戶端編碼方式;

? ? ? character_set_connection為建立連接使用的編碼;

? ? ? character_set_database數據庫的編碼;

? ? ? character_set_results結果集的編碼;

? ? ? character_set_server數據庫服務器的編碼;

只要保證以上四個采用的編碼方式一樣,就不會出現亂碼問題。

另一個查看數據庫編碼的命令:

>show variables like ‘collation%’;

2linux系統下,修改MySQL數據庫默認編碼的步驟為:

  • 停止MySQL的運行 /etc/init.d/mysql start (stop)?為啟動和停止服務器

  • MySQL主配置文件為my.cnf,一般目錄為/etc/mysql

var/lib/mysql/?放置的是數據庫表文件夾,這里的mysql相當于windowsmysqldate文件夾

  • 當我們需要修改MySQL數據庫的默認編碼時,需要編輯my.cnf文件進行編碼修改,linux下修改mysql的配置文件my.cnf,文件位置默認/etc/my.cnf文件?
    找到客戶端配置[client]?在下面添加? default-character-set=utf8?默認字符集為utf8? 在找到[mysqld]?添加? default-character-set=utf8?默認字符集為utf8? init_connect='SET NAMES utf8'?(設定連接mysql數據庫時使用utf8編碼,以讓mysql數據庫為utf8運行)?
    修改好后,重新啟動mysql?即可,重新查詢數據庫編碼可發現編碼方式的改變:

>show variables like 'character%';? +--------------------------+----------------------------+? | Variable_name | Value |? +--------------------------+----------------------------+? | character_set_client | utf8 |? | character_set_connection | utf8 |? | character_set_database | utf8 |? | character_set_filesystem | binary |? | character_set_results | utf8 |? | character_set_server | utf8 |? | character_set_system | utf8 |? | character_sets_dir | /usr/share/mysql/charsets/ |? +--------------------------+----------------------------+?
此方法用于標準mysql版本同樣有效,對于/etc/my.cnf文件,需要從mysql/support-files的文件夾cp my-large.cnf一份到/etc/my.cnf

3windows系統下可以刪除MySQL數據庫,并重新安裝,在安裝過程中可以直接用Mysql Server Instance Config Wizard?進行設置

? 4、當MySQL數據庫服務器已經有數據不適合刪除重裝時,可以個別指定數據庫的編碼方式。MySQL指定編碼的方式是非常靈活并多樣化的,可以指定表級別的編碼,行級別編碼,甚至可以指定字段級別的編碼。

?以下示例給出創建數據庫時指定編碼的兩種方式:

?1CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE utf8_general_ci

?2create database if not exists netctoss default character set utf8;

? ?5、如果你采用的是外部接入的方式,可以在連接中確定請求的編碼格式如:jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf-8(注意:不要出現任何空格,否則出錯)

? ?6、執行腳本:指定編碼格式set names gbk(注意,不是UTF-8)可以修改

執行前:

執行后:

從執行命令前后可知,set names gbk只可以修改character_set_clientcharacter_set_connectioncharacter_set_results的編碼方式,并且這種修改是窗口級別的,只針對本窗口有效,打開另外一個窗口修改無效。也可發現數據庫底層的編碼方式沒有改變,插入數據后還是以utf8編碼方式保持。

3、修改mysql數據庫的默認編碼方式

? ? 修改my.ini文件

? ? 加上?default-character-set=gb2312

? ? 設定數據庫字符集

? ? alter database da_name default character set 'charset'

? ? 1)設置數據庫編碼 /etc/my.cnf(Linux下的文件)
? ? [mysqld]
? ? default-character-set=gbk

? ? ...
? ? [client]
? ? default-character-set=gbk

---------------------------------------

? ?2 )按字符集導出
? $mysqldump -u root -p dbname --default-character-set=gbk > a.sql;

? ?3)查看SQL文件的編碼
? ?[ root@localhost gethtml]# file a.sql
? ? ? a.sql: UTF-8 Unicode ...
? ?[root@localhost gethtml]# iconv -f utf-8 -t gbk a.sql > a2.sql
? ?[root@localhost gethtml]# file a2.sql
? ? ? a2.sql: Non-ISO extended-ASCII English text 這時已經是gbk的編碼了

? 3)導入
? 查看數據庫服務和客戶端字符集?
? ?mysql> status;
? ?Server characterset:??? gbk
? ?Db???? characterset:????? gbk
? ?Client characterset:????? latin1
? ?Conn. characterset:???? latin1

? ?mysql> set names 'gbk';?? //這樣

? ?mysql> status;
? Server characterset:?? gbk
? Db???? characterset:???? gbk
? Client characterset:???? gbk
? Conn. characterset:??? gbk

? 這時才能導數據
? mysql> source a.sql;

----------------------------------------------------------------------------------

? 單獨設置某個數據庫:
? alter database testdb character set utf8;

? 查看mysql支持的編碼:
? show character set;


? 查看系統的字符集和排序方式的設定可以通過下面的兩條命令:

? mysql> SHOW VARIABLES LIKE ''character_set_%'';

? LINUX 如下:

? 1)導出數據
? [root@www.cnscn.org ~]$ mysqldump -u root -p dbname --default-character-set=gbk > base_user.sql;

? 2)查看導出的sql文件的編碼
? [root@www.cnscn.org ~]$ file base_user.sql?
  base_user.sql: UTF-8 Unicode text, with very long lines

3)轉成要用的編碼
[root@www.cnscn.org ~]$ iconv -f utf-8 -t gbk base_user.sql >base_user_gbk.sql

4)連接數據庫并查看當前庫的編碼
[root@www.cnscn.org ~]$ mysql -uroot
 mysql> use testdb;

mysql> status;
??? Server characterset:??? latin1
??? Db???? characterset:??? gbk
??? Client characterset:??? latin1
??? Conn. characterset:??? latin1

5)設置成需要的編碼
mysql>set names 'gbk';

6)查看現在的編碼
mysql> status;
??? Server characterset:??? latin1
??? Db???? characterset:??? gbk
??? Client characterset:??? gbk
??? Conn. characterset:??? gbk

7)導入我們轉換成gbk后的文件
mysql> source base_user_gbk.sql;



轉載于:https://www.cnblogs.com/tham/p/6827318.html

總結

以上是生活随笔為你收集整理的MySql默认编码所造成的乱码麻烦1.222的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。