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

這個實際上是latin1字符編碼。
如果我們直接查的話,那么需要轉換一下:
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)轉成tf8的編碼了,已經(jīng)正常了!
如果我們要使用查詢的字段里面包含亂碼,我們可以這樣使用:
?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 '%王府井%'

也就是先把查詢的目標轉成utf8,然后再進行查詢.
當然了,以上是在遷移后,庫中是亂碼的情況下,進行操作的,那我們需要把編碼轉成utf8這樣不用去改寫代碼,免去不必要的麻煩!
處理前的編碼如下:

使用如下的操作:
?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

處理后的編碼如下:

這個時候可以直接查詢,不用進行轉換了!

現(xiàn)在已經(jīng)是正常的編碼了,遷移就成功了,不用再去改代碼來處理了!
到此這篇關于mysql 亂碼字符 latin1 characters 轉換為 UTF8詳情的文章就介紹到這了,更多相關mysql 亂碼轉為 UTF8內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL按時間統(tǒng)計數(shù)據(jù)的方法總結
在本篇MYSQL的內容里,我們給大家整理了關于按時間統(tǒng)計數(shù)據(jù)的方法內容,有需要的朋友們學習下。2019-02-02
Windows下修改mysql的data文件夾存放位置的方法
這篇文章主要介紹了在Windows下修改mysql的data文件夾存放位置的方法,需要的朋友可以參考下2014-03-03
mysql啟動報錯MySQL server PID file could not be found
這篇文章主要介紹了mysql啟動報錯MySQL server PID file could not be found,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11

