MySQL連線時的亂碼問題

2023-01-27 13:36:21 字數 1863 閱讀 4067

昨天用python連線mysql時遇到了一個錯誤:

'latin-1' codec can't encode characters in position 36-37: ordinal not in ra......

調式一個多鐘頭才發現原來是編碼的問題,

於是檢視mysql的編碼如下:

mysql>show variables like "%character%";
問題就出在這,以上三個設定編碼是gbk,比如用python連線資料庫,查詢操作時可能出現中文讀取亂碼,插入操作時會報錯:'latin-1' codec can't encode characters in position 36-37: ordinal not in ra......

這裡我們只需將編碼格式修改為utf8即可,

可直接在命令列中執行

mysql>

set character_set_client=

utf8;

mysql

>

set character_set_connection=

utf8;

mysql

>

set character_set_results=

utf8;

mysql

>show variables like "%

character

%";

但是採用這種方式修改編碼只能在當前有效,也就是說當你重新啟動mysql時就會失效,還是原來的gbk編碼。

如果想要utf8編碼永久有效,我們可以修改配置檔案my.ini

如果是預設安裝,該檔案位於mysql安裝目錄下:

c:\programdata\mysql\mysql server 5.7

如果沒有找到,就是在windows下隱藏了,可以直接在路徑欄裡輸入路徑,或者顯示隱藏檔案。

用記事本編輯my.ini

在[client]下新增

default

-character

-set

=utf8

如果已存在只需將gbk修改為utf8

在[mysql]下新增

default

-character

-set

=utf8

在[mysqld]下新增

init_connect=

'set collation_connection=utf8_unicode_ci

'init_connect='

set names utf8

'collation

-server=

utf8_unicode_ci

skip

-character

-set

-client-handshake

儲存重啟mysql即可。

還有要提一下:

連線時可以這樣寫

database=pymysql.connect(host="localhost",user="root",password="root",

db="phonebook",port=3306,charset="utf8")

jdbc 連線mysql亂碼問題

使用mysql時候經常會出現亂碼問題,必須得宣告編碼格式,我剛剛在編寫的時候就因為編碼問題而導致其他地方查詢的時候查不出結果,而我在後臺使用命令可以查出來,起初是以為jdbc函式寫錯了,其中的查詢語句不對。後來發現當資料庫中的資料改為英文的時候不出現問題,改為中文的時候就查詢不出錯誤了,於是確定是編...

C 連線 Mysql 中文亂碼問題

網上有很多解決亂碼的方法,什麼 set names utf8 什麼在插入資料前進行編碼,親自試了都沒有效果,在網上尋覓了很久,終於找到一種方法,並親試成功 首先要保證你的資料庫是utf8字符集的,然後重點了,關鍵就在於你的連線字串,要在連線字串上標明你的連線是utf8的如下 static strin...

Jdbc連線Mysql亂碼的問題

最開始mysql的字元編碼全部是預設 latin1。後來查了網上很多方法,尤其是jdbc的url後面加上useunicode true characterencoding utf8和set names utf8,在我的環境中是沒有用的,依然亂碼。最後的解決方案 修改mysql預設的編碼,分三部分 m...