MySQL編碼不一致導致亂碼問題解決

2021-05-24 08:22:55 字數 1231 閱讀 2470

使用mysql常常會出現亂碼問題,一般情況下都是因為編碼不一致造成,以下提供了mysql資料編碼相關的一些資訊,希望會有所幫助。 一、mysql的編碼機制: 1、資料庫級別的編碼:資料庫伺服器上允許建立不同編碼的資料庫,在資料庫建立時需要指定編碼; 2、表級別的編碼:同乙個資料庫中可以建立不同編碼的表,在表建立時需要指定編碼,預設為使用者連線時的編碼; 3、表字段級別的編碼:同乙個表中可以建立不同編碼的字段,預設為表的編碼,要對字段指定特殊的編碼,必須在字段中明確指定編碼格式; 4、建立資料庫連線時的編碼:使用者可以在建立資料庫連線時指定編碼,預設為伺服器的配置。 二、出現亂碼的一般原因: 1、建立資料庫連線時使用的編碼不對: 例如:資料庫編碼為utf-8,連線資料時沒有指定編碼格式常常會造成亂碼問題,正常的解決應該是在driverurl中指定編碼 jdbc:mysql://localhost:3306/zhuojh?useunicode=true&characterencoding=utf-8 2、表的編碼和driverurl中指定編碼不一致造成的亂碼問題 例如:表的編碼是latin1,driverurl中指定編碼卻是utf-8,在儲存時就會提示儲存了錯誤的資料,解決方式就是使用相同的編碼 3、表的編碼和表中字段編碼不一致造成的亂碼問題 例如:表的編碼是utf-8,表中的字段卻是latin,這種情況編碼問題處理起來比較複雜,建議統一編碼格式,有興趣者可以深入研究 三、案例 1、spring、hibernate、struts和proxool,採用mysql資料庫亂碼問題解決: 如果表和字段的編碼一致都是utf-8,在proxool配置中指定下配置項,即可解決亂碼問題

jdbc:mysql://localhost:3306/zhuojh?useunicode=true&characterencoding=utf-8

2、spring、struts和ibatis,採用mysql資料庫亂碼問題解決: 如果表和字段的編碼一致都是utf-8,在屬性檔案配置中指定下配置項,即可解決亂碼問題 jdbc:mysql://localhost:3306/bcq?useunicode/=true&characterencoding/=utf-8 3、linux下使用mysql自帶的備份工具轉換不同編碼格式的表資料 如果源表的編碼格式為latin1,目標表的編碼格式為utf-8,在linux環境下可以使用以下命令進行轉換 mysqldump -c -h $ -u$ -p$ --default-character-set=latin1 source_database source_tablename|sed -e 's/latin1/utf8/'|mysql -u$ -p$ local_tablename

QT原始檔編碼格式不一致導致中文亂碼

最簡單的辦法 直接用txt開啟.h cpp等檔案,另存為,編碼格式選擇utf 8即可!例如windows系統下,中文就很容易出現亂碼,如下圖,檔案本來是在utf 8格式下進行編輯的,結果卻意外儲存成了gb2312格式。如果知道原來的編碼格式是什麼,可以直接通過 選擇編碼 來選擇正確的編碼方式。而如果...

mysql 字段型別不一致導致索引失效

近日,線上發現一條查詢效率很低的sql 還好只是試執行,不然要涼涼了 sql也比較簡單,就是查詢部門,順便關聯了部門的所屬行政區劃,紅色的子查詢是這次的查詢較慢的原因 使用explain 分析sql可以看到,對於md administrative region表是進行了全表的掃瞄 type all ...

快取不一致

當程式在執行過程中,會將運算需要的資料從主存複製乙份到cpu的快取記憶體當中,那麼cpu進行計算時就可以直接從它的快取記憶體讀取資料和向其中寫入資料,當運算結束之後,再將快取記憶體中的資料重新整理到主存當中。舉個簡單的例子 i i 1。當執行緒執行這個語句時,會先從主存當中讀取i的值,然後複製乙份到...