為什麼向資料庫插入中文出現亂碼,mysql資料庫中存進的是中文,為什麼查出來的亂碼?

時間 2021-08-30 09:30:44

1樓:匿名使用者

你的mysql客戶端和你的mysql伺服器的編碼不一樣,,應為utf8編碼的中文是3個字元,而gbk編碼的中文是兩個字元,,這樣解析出來的中文就是亂碼了。。你需要該資料庫的字符集編碼。。。具體如下:

找到mysql 的ini配置檔案

在[client]這裡加上default_character_set = utf8

在[mysqld]這裡加上character_set_server = utf8

不出意外應該可以了

2樓:匿名使用者

呵呵,mysql資料庫編碼是比較複雜的,既然你資料庫中沒有出現亂碼,那就是說從資料庫讀取轉換的時候出現了亂碼。你只說是亂碼,沒有相關資訊,大家沒法幫你解決。所以你首先,開啟mysql控制檯。

輸入: show variebles like “character_set_%”;然後把得到的資訊,貼出來,我看看問題是出在**了。

3樓:匿名使用者

開啟資料庫裡看看顯示的是不是亂碼如果不是的話 就是你jsp頁面的編碼問題在頁面的第一行加上<%@ page contenttype="text/html; charset=gb2312"%>或者選擇utf-8

4樓:匿名使用者

mysql設定裡面不支援中文吧.

5樓:匿名使用者

你的系統中毒了,什麼問題你都遇到了。你好強大!

6樓:愛可生雲資料庫

一、轉碼失敗

在資料寫入到表的過程中轉碼失敗,資料庫端也沒有進行恰當的處理,導致存放在表裡的資料亂碼。

針對這種情況,前幾篇文章介紹過客戶端傳送請求到服務端。

其中任意一個編碼不一致,都會導致表裡的資料存入不正確的編碼而產生亂碼。

比如下面簡單一條語句:

set @a = "文字字串";

insert into t1 values(@a);

變數 @a 的字元編碼是由引數 character_set_client 決定的,假設此時編碼為 a,也就是變數 @a 的編碼。

2. 寫入語句在傳送到 mysql 服務端之前的編碼由 character_set_connection 決定,假設此時編碼為 b。

3. 經過 mysql 一系列詞法,語法解析等處理後,寫入到表 t1,表 t1 的編碼為 c。

那這裡編碼 a、編碼 b、編碼 c 如果不相容,寫入的資料就直接亂碼。

二、客戶端亂碼

表資料正常,但是客戶端展示後出現亂碼。

這一類場景,指的是從 mysql 表裡拿資料出來返回到客戶端,mysql 裡的資料本身沒有問題。客戶端傳送請求到 mysql,表的編碼為 d,從 mysql 拿到記錄結果傳輸到客戶端,此時記錄編碼為 e(character_set_results)。

那以上編碼 e 和 d 如果不相容,檢索出來的資料就看起來亂碼了。但是由於資料本身沒有被破壞,所以換個相容的編碼就可以獲取正確的結果。

這一類又分為以下三個不同的小類:

1)欄位編碼和表一致,客戶端是不同的編碼

比如下面例子, 表資料的編碼是 utf8mb4,而 session 1 發起的連線編碼為 gbk。那由於編碼不相容,檢索出來的資料肯定為亂碼。

2)表編碼和客戶端的編碼一致,但是記錄之間編碼存在不一致的情形

比如表編碼是 utf8mb4,應用端編碼也是 utf8mb4,但是表裡的資料可能一半編碼是 utf8mb4,另外一半是 gbk。那麼此時表的資料也是正常的,不過此時採用哪種編碼都讀不到所有完整的資料。這樣資料產生的原因很多,比如其中一種可能性就是表編碼多次變更而且每次變更不徹底導致(變更不徹底,我之前的篇章裡有介紹)。

舉個例子,表 t3 的編碼之前是 utf8mb4,現在是 gbk,而且兩次編碼期間都被寫入了正常的資料。

3)每個欄位的編碼不一致,導致亂碼和第二點一樣的場景。不同的是:非記錄間的編碼不統一,而是每個欄位編碼不統一。

舉個例子,表 c1 欄位 a1,a2。a1 編碼 gbk,a2 編碼是 utf8mb4。那每個欄位單獨讀出來資料是完整的,但是所有欄位一起讀出來,資料總會有一部分亂碼。

三、latin1

還有一種情形就是以 latin1 的編碼儲存資料

估計大家都知道字符集 latin1,latin1 對所有字元都是單位元組流處理,遇到不能處理的位元組流,保持原樣,那麼在以上兩種存入和檢索的過程中都能保證資料一致,所以 mysql 長期以來預設的編碼都是 latin1。這種情形,看起來也沒啥不對的點,資料也沒亂碼,那為什麼還有選用其他的編碼呢?原因就是對字元儲存的位元組數不一樣,比如 emoji 字元 "❤",如果用 utf8mb4 儲存,佔用 3 個位元組,那 varchar(12) 就能存放 12 個字元,但是換成 latin1,只能存 4 個字元。

7樓:淡淡的雷人生活

首先檢視mysql字符集

show variables like 'character_set%';

修改配置檔案 vim /etc/my.cnf[client]

default-character-set=utf8[mysqld]

character_set_server=utf8

為什麼從資料庫中讀出來中文的資料是亂碼

8樓:匿名使用者

一般是web伺服器頁面的編碼與資料庫不一致導致

比如做一些設定<%@language=jscript @codepage=936%>

4,檔案存成 utf-8

大部分資料庫都支援以unicode編碼方式,

所以解決與資料庫之間的亂碼問題比較明智的方式是直接使用unicode編碼與資料庫互動。

很多資料庫驅動自動支援unicode,如microsoft的sqlserver驅動。

其他大部分資料庫驅動,可以在驅動的url引數中指定,如mm的mysql驅動:

jdbc:mysql://localhost/webcldb?useunicode=true&characterencoding=gbk。

當用jdbc向資料庫中插入資料或從資料庫中提取資料時,為何有時中文字元會顯示為亂碼? 10

9樓:匿名使用者

這個問題通常與各個jdbc driver的實現有關. 目前大多數jdbc driver採用本地編碼格式來傳輸中文字元,例如中文字元"0x4175"會被轉成"0x41"和"0x75"進行傳輸. 因此我們需要對jdbc driver返回的字元以及要發給jdbc driver的字元進行轉換.

當用jdbc driver向資料庫中插入資料時,需要先將unicode轉成native code; 當 jdbc driver從資料庫中查詢資料時,則需要將native code轉換成unicode. 下面給出了這兩種轉換的實現:

string native2unicode(string s)

byte buffer = new byte[s.length()];

for (int i = 0; i s.length(); i++)

else

}return new string(buffer, 0, j);

}除使用以上兩個方法之外,有些jdbc driver如果對jdbc driver manager設定了正確 的字符集屬性,以上2個方法就不需要了.

向mysql資料庫插入漢字亂碼怎麼處理

10樓:匿名使用者

mysql資料庫 為了保證 不出現亂碼包注意4項一直

1 建立一致 使用utf8

create database `test2` default character set utf8 collate utf8_general_ci;

2. 連結編碼一致

$mysqli->query("set names 'utf8'");

3. html php 頁面宣告 編碼一致

header("content-type: text/html; charset=utf-8");

4 . 指令碼檔案 編碼一致

儲存指令碼檔案時選擇unicode utf8

特別提示, windows 使用中文檔名和目錄名 , 預設的是gbk 要寫入非 gbk資料庫需要轉為一致的**

將漢語插入到mysql資料庫中顯示亂碼是怎麼辦

11樓:

看一下你插入表的對應欄位屬性的編碼,有utf-8、gbk等按照對應欄位屬性編碼是gbk的話,那麼在**中執行插入語句前加上mysql_query('set names gbk'); 這條語句。

希望回答對你有幫助~

為什麼將txt檔案中的中文匯入mysql出現亂碼?

12樓:匿名使用者

用untra開啟txt,然後另存為 utf-8

建立mysql 資料庫和表 編碼也是utf-8

然後匯入就可以了

13樓:匿名使用者

你在資料庫打上set names utf8;這樣就顯示不是亂碼了。

14樓:木萬萬

先在mysql下看一下你的字符集: show variables like 'character%';

15樓:

資料庫和txt編碼應一致。

16樓:肥醉瑞雅寧

編碼格式不符,可以改變txt的編碼或者mysql的編碼

sql檔案匯入後,中文變亂碼,怎樣解決

17樓:小丁創業

解決的方法和詳細的操作步驟如下:

1、首先,單擊“objects”按鈕以檢視有關此表的詳細資訊,如下圖所示,然後進入下一步。

2、其次,完成上述步驟後,“teacname”欄位的字符集不是“utf8”,如下圖所示,然後進入下一步。

3、接著,完成上述步驟後,可以右鍵單擊此表,然後選擇“alter table...”選項,如下圖所示,然後進入下一步。

4、然後,完成上述步驟後,在“teacname”欄位後面的字符集中選擇“utf8_general_ci”選項,然後單擊下面的“alter”按鈕,如下圖所示,然後進入下一步。

5、隨後,完成上述步驟後,成功修改,單擊“確定”按鈕,如下圖所示,然後進入下一步。

6、最後,完成上述步驟後,再次插入中文資料,就不會出現亂碼了,如下圖所示。這樣,問題就解決了。

18樓:太平洋電腦網

解壓檔案出現中文亂碼怎麼辦解決辦法

19樓:匿名使用者

肯定是它的資料庫和你的資料庫的編碼不一致。

檢視他的資料庫的編碼,比如為a編碼。

檢視你的資料庫的編碼,比如為b編碼。

用ultraedit開啟指令碼檔案(給你的sql檔案),另存為另一個檔案(儲存時選擇你的編碼b)

然後再匯入。

使用PHP向MYSQL資料庫插入中文資料時,頁面中文顯示正常

這個問題不大。主要匯出來是亂碼才問題。你檢查過頁面是不是utf8的沒有,不行最上面加上 header content type text html charset utf 8 好像是utf 8,你可以試試utf8,gb2312總有一個可以的啦。你在資料庫裡看,你在資料庫裡打 set names ut...

用jsp連線mysql資料庫,出現中文亂碼,該怎麼解決啊

v無限可能 這是我很早之前寫的文章,一步一步照著做基本能解決所有的mysql亂碼問題。有不明白的問題隨時追問我 http hi.baidu.com xiaosa1984 blog item 4d122a3f5d11c3c47c1e7143.html 孤魂風兒 用的是servlet吧,設定編碼方式 r...

資料庫從一張表向另一張表怎麼插入資料

千鋒教育 下面以mysql資料庫為例分情況一一說明 兩張表 inserttest和inserttest2,前者中有測試資料 1.如果2張表的欄位一致,並且希望插入全部資料,可以用這種方法 insert into 目標表 select from 表 insert into inserttest sel...