mysql?亂碼字符?latin1?characters?轉(zhuǎn)換為?UTF8詳情
背景:目前正在進(jìn)行業(yè)務(wù)重構(gòu),需要對(duì)使用MySQL的業(yè)務(wù)庫(kù)表進(jìn)行重新設(shè)計(jì),在遷移時(shí),遇到了中文字符亂碼問(wèn)題(源庫(kù)表的默認(rèn)編碼是LATIN1,新庫(kù)表的默認(rèn)編碼為UTF8),故重新學(xué)習(xí)了下MySQL編碼和解碼相關(guān)知識(shí),并整理了在遭遇亂碼時(shí)的一些常用技巧。
比如我下面一張表是省市區(qū)的編碼存儲(chǔ),導(dǎo)入之后數(shù)據(jù)庫(kù)變成如下的亂碼:

這個(gè)實(shí)際上是latin1字符編碼。
如果我們直接查的話(huà),那么需要轉(zhuǎn)換一下:
select id,parent_code,area_code,CONVERT(CAST(CONVERT(name USING LATIN1) AS BINARY) USING UTF8) from cnarea_2020 ?where parent_code ='110000000000' or parent_code ='110101001000'?
可以看到如下:

已經(jīng)轉(zhuǎn)成tf8的編碼了,已經(jīng)正常了!
如果我們要使用查詢(xún)的字段里面包含亂碼,我們可以這樣使用:
?select * from (select id,parent_code,area_code,CONVERT(CAST(CONVERT(name USING LATIN1) AS BINARY) USING UTF8) as name from cnarea_2020 ?where city_code ='010') as t where t.name like '%王府井%'

也就是先把查詢(xún)的目標(biāo)轉(zhuǎn)成utf8,然后再進(jìn)行查詢(xún).
當(dāng)然了,以上是在遷移后,庫(kù)中是亂碼的情況下,進(jìn)行操作的,那我們需要把編碼轉(zhuǎn)成utf8這樣不用去改寫(xiě)代碼,免去不必要的麻煩!
處理前的編碼如下:

使用如下的操作:
?UPDATE cnarea_2020 SET? ? ? name=convert(cast(convert(name using ?latin1) as binary) using utf8),? ? ? short_name=convert(cast(convert(short_name using ?latin1) as binary) using utf8),? ? ? merger_name=convert(cast(convert(merger_name using ?latin1) as binary) using utf8) WHERE 1=1

處理后的編碼如下:

這個(gè)時(shí)候可以直接查詢(xún),不用進(jìn)行轉(zhuǎn)換了!

現(xiàn)在已經(jīng)是正常的編碼了,遷移就成功了,不用再去改代碼來(lái)處理了!
到此這篇關(guān)于mysql 亂碼字符 latin1 characters 轉(zhuǎn)換為 UTF8詳情的文章就介紹到這了,更多相關(guān)mysql 亂碼轉(zhuǎn)為 UTF8內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- php中將圖片gif,jpg或mysql longblob或blob字段值轉(zhuǎn)換成16進(jìn)制字符串
- 完美轉(zhuǎn)換MySQL的字符集 解決查看utf8源文件中的亂碼問(wèn)題
- 深入MYSQL字符數(shù)字轉(zhuǎn)換的詳解
- mysql字符串的‘123’轉(zhuǎn)換為數(shù)字的123的實(shí)例
- 淺談MySql整型索引和字符串索引失效或隱式轉(zhuǎn)換問(wèn)題
- 詳解MySQL如何有效的存儲(chǔ)IP地址及字符串IP和數(shù)值之間如何轉(zhuǎn)換
- MySQL?字符串轉(zhuǎn)換為數(shù)字的方法小結(jié)
- MySql獲取當(dāng)前時(shí)間并轉(zhuǎn)換成字符串的實(shí)現(xiàn)
- MySQL優(yōu)化案例之隱式字符編碼轉(zhuǎn)換
相關(guān)文章
[MySQL binlog]mysql如何徹底解析Mixed日志格式的binlog
這篇文章主要介紹了mysql徹底解析Mixed日志格式的binlog,需要的朋友可以參考下2014-02-02
MySQL用limit方式實(shí)現(xiàn)分頁(yè)的實(shí)例方法
在本篇文章中小編給大家整理了一篇關(guān)于MySQL用limit方式實(shí)現(xiàn)分頁(yè)的實(shí)例方法,有需要的朋友們可以參考學(xué)習(xí)下。2020-01-01
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)學(xué)習(xí)之JSON函數(shù)各類(lèi)操作詳解
很多日常業(yè)務(wù)場(chǎng)景都會(huì)用到j(luò)son文件作為數(shù)據(jù)存儲(chǔ)起來(lái),而mysql5.7以上就提供了存儲(chǔ)json的支撐。這篇文章就為大家整理了MySQL中JSON函數(shù)的各類(lèi)操作,感興趣的可以了解一下2023-02-02
mysql 5.7.21解壓版本安裝 Navicat數(shù)據(jù)庫(kù)操作工具安裝
這篇文章主要為大家詳細(xì)介紹了mysql 5.7.21解壓版本安裝,Navicat數(shù)據(jù)庫(kù)操作工具安裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
利用MySQL系統(tǒng)數(shù)據(jù)庫(kù)做性能負(fù)載診斷的方法
這篇文章主要介紹了利用MySQL系統(tǒng)數(shù)據(jù)庫(kù)做性能負(fù)載診斷的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09

