是的,我又遇到問題了,這次的問題是出在程式本身,因為某一個相簿系統,預設的編碼是 latin1_swedish_ci,也就是預設的是Latin1編碼(ISO 8859-1),存中文的時候,可以存,也可以顯示,但是如果直接用phpMyAdmin等工具去看資料庫的時候,就會遇到一堆亂碼了,我自己是偷懶,直接寫了一個php的涵式,在Latin1和UTF8中切換,用了快了兩年,也是相安無事,反正亂碼就亂碼,我程式能讀的到,能解碼,能更新刪除就好,要我去把編碼翻掉,大改相簿系統,那就算了吧!我沒有這麼多的力氣。
反正在lain1中存中文,解出來的中文也沒有問題,和其他資料表交換資料,用一個小涵或,但是事情沒有我想的這麼簡單,以為從此就可以過著幸福快樂的日子。
好死不死的,整個系統連同相簿可能要改版到簡體中文,其他UTF編碼好解決,直接Dump出來,轉成簡體就好,但是相簿預設的是latin1,但是光是編碼,就弄死我了,修改phpMyAdmin的預設連線成「latin1_swedish_ci」無效,Download下來ConverZ無效,父用Notepad++去改編碼,也無效。我沒有辦法透過轉檔的方式,我看可能要另外寫程式了。
程式的動作
1.Latin1 轉存到 Utf8
2.Utf8的資料倒出來正體中文資料,轉成UTF8的簡體中文
3.Utf8簡體中文資料轉存回Latin1的資料表中
一共有30個表要轉,我的老天啊!有沒有比較簡單的方法啊!在網路上都沒有看到比較簡單的解法,ConverZ沒有這些功能,我該怎麼辦呢?頭㾫中。
如果我有找到比較好的解法,我再放上來,日後如果遇到,就不會這麼痛苦了,一個晚上沒有睡,也是另一個痛苦。
修改phpMyAdmin的預設連線成「latin1_swedish_ci」無效,Download下來ConverZ無效,父用Notepad++去改編碼,也無效。
在php.net的官網中看到2個函數,分別是utf8_decode和utf8_encode,其實還是要寫程式的話,這兩個內建的函式,應該會比自己寫的快很多。
隨機文章
- [chatGPT 測試] 評測開箱 Synology DS918+ (2023-03-05)
- 別再相信Mobile01上自稱專家的說法 (2012-12-02)
- Lubuntu 1604 在ESXi 中無法進入X-Window解法 (2016-08-07)
- 刑事局偵九隊只會抓手機竊聽,卻不會抓網路詐騙 (2014-03-14)
- 世界沒有末日,陽光依舊燦爛 (2011-05-12)
习惯了简体,看繁体还有点不习惯
說的是…都是習慣的問題
你有沒有試過用iconv或piconv去轉一下呢?
大致就是先用iconv/piconv去轉以後,再用notepad++或者ultraedit去把檔案存成utf8或者其他編碼格式的檔案
然後為求慎重起見要碼就是改my.cnf裡面的預設連線charset或者是直接寫在db檔案上頭(加個SET)
php裡面有個好用的mb_detect_encoding可以幫你偵測encoding type,不過你這邊案例應該是知道資料庫編碼了~我想就剩下轉碼而已~
要不然就是加個幾行code,讓系統每次讀出資料時轉換完成後直接轉存一分到新資料庫,搞工一點就是寫個script循環轉掉~不過還是省事點用iconv吧~希望有幫助
編碼不是問題…
只是我把兩個系統整合起來遇到問題
記得倒出來時的,檢查一下當前資料庫的預設連線charset,然後倒出來後直接用iconv轉掉..(可以的話就用mysqldump 加上set charset的參數去手動指定要使用的連線charset)
步驟大概就如下:
1. 倒出
2. iconv轉檔
3. 先倒入看看,不行就download下來確認檔案內容編碼
4.重新倒入,收工。
這是一個複雜的問題
問題出在我的資料庫用了兩個編碼
UTF8是我自己寫的系統
Lantin1是相簿系統
在管理的時候,我已經透過小函式來處理(set …blabla)
現在要轉成簡體
UTF8好解~我處理起來很快
Latin1…就比較麻煩
基本上我已經寫程式處理的差不多了…
累………