專做系統家具、系統櫃 客製化流暢舒適居家,免費估價規劃 | 全系列活動百葉窗.防火安全門.氣密隔音窗 堅固耐用.工廠直營.歡迎洽詢 |
[Mysql] 資料庫備份[big5]utf8轉換成utf-8 |
房東:張經理 發表時間:2015-08-08 |
其實在很多opensource底下的套裝軟體,資料庫預設都是用 utf8,我想這會造成在 phpMyAdmin 底下看到亂碼,然後自己之前也有遇到問題,然後又在網路上看到這篇 搶救 xdite.net 所用的奇技淫巧 裡面所寫的備份方式跟我在轉換 phpBB2 跟自己的 wordpress 一樣 大同小異,我還在想說有更好的解法說,看來是沒有,在 wordpress 底下,只能利用後台的資料庫備份,不然用phpMyAdmin的話,我想你備份出來也是沒用。 其實解法很容易,在 搶救 xdite.net 所用的奇技淫巧 裡面有提到一篇大陸的解法:搞定亂碼,搬家到 Dreamhost 其實內容大概就跟我第一段寫的差不多,如果有提供ssh的虛擬主機的話,還可以利用ssh mysqldump 的方式來備份 備份步驟如下
上面的方法適用於再任何套裝軟體,我在 phpBB2 的big5轉換成utf-8的時候,也是用這種方法,給大家參考看看 |
|
DRAPERY窗簾設計 捲簾、窗簾布、窗簾布多種款式,免費丈量,挑戰市場超低價,為家輕鬆增添新意 優潔清潔公司 夏季清潔讓您煥然一新,專業清潔團隊,寶貝家具不受損,輕鬆擁有乾淨居家,守護您的健康環境 TECHNIQUE冷氣空調規劃 冷氣界的達人,多重售後服務保障,專業熱忱技術,多戶家庭一致推薦 |
1 樓住戶:張經理 發表時間:2015-08-08 |
1. 利用文字模式mysql備份database
2. 在phpMyadmin中設定MySQL 字符集:
3. phpMyadmin中設定MySQL 連線校對 選 utf8_general_ci
4. 修改剛剛備份好的 sql 檔案,用編輯器打開
5. 用ConvertZ將sql檔,從big5轉成utf8
6.然後在用phpMyAdmin把檔案匯入到新建立的資料庫,或者是下指令
7. 修改 php 程式碼 |
2 樓住戶:kkk 發表時間:2015-08-08 |
MySQL Big5 轉 utf8 ◎ PHP 與 MySQL 建立連線: 所以為了解決亂碼問題,在PHP 與 MySQL 建立連線時,於 query 之前先執行: mysql_query("SET CHARACTER_SET_CLIENT=utf8"); mysql_query("SET CHARACTER_SET_CONNECTION=utf8"); mysql_query("SET CHARACTER_SET_RESULTS=utf8"); 如上三列編碼都一樣時,可直接執行下列 mysql_query("SET NAMES utf8"); ◎ MySQL資料庫big5轉utf8: Step1:首先把資料dump出來 由於先前資料是存成latin1,所以dump出來後要用iconf或piconf把他轉成UTF-8,記得dump出來時要加上-default-character-set=latin1 #mysqldump -u 帳號 -p --default-character-set=latin1 資料庫 >output.sql Step2:big5轉成utf8 如果原先是Big5的資料, dump出來後就直接把Big5轉成UTF-8即可 #piconv -f big5 -t utf8 output.sql >utf8.sql 如果原先是UTF-8的資料,dump出來後要先轉成Big5後,再把他轉成UTF-8,因為原先dump出來的是偽裝成UTF-8的lantin1不是真正的UTF-8 #mysqldump -u 帳號 -p -default-character-set=latin1 資料庫 >output.sql #piconv -f utf8 -t big5 output.sql > big5.sql #piconv -f big5 -t utf8 big5.sql >utf8.sql Step3:修改sql檔 1、修改轉成的sql檔中所產生的‘’\”及換行的問題(有時換行時會成‘\n’) 2、在dump出來的sql檔最前面加上: SET NAMES utf8; SET CHARACTER_SET_CLIENT=utf8; SET CHARACTER_SET_RESULTS=utf8; :1,$s/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/g :1,$s/latin1/utf8/gc :1,$s/許\\/許/g :1,$s/功\\/功/g :1,$s/蓋\\/蓋/g :1,$s/餐\\/餐/g :1,$s/愧\\/愧/g :1,$s/擺\\/擺/g :1,$s/穀\\/穀/g :1,$s/淚\\/淚/g :1,$s/豹\\/豹/g :1,$s/珮\\/珮/g :1,$s/俞\\/俞/g 再來把每個資料表後面的TYPE=MyISAM是否有DEFAULT CHARSET=latin1; 若沒有請改為ENGINE=MyISAM DEFAULT CHARSET=utf8; Step4:建立新的資料庫 方法1. SQL語法 CREATE DATABASE `資料庫` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 方法2. 用phpMyAdmin建立資料庫的,建立時”校對”要選utf8_general_ci 步驟五:import資料 方法1. SQL語法 #mysql -u 帳號 -p 資料庫 < utf8.sql 方法2. 直接用phpMyAdmin把他import進去了,import時記得文字編碼檔案要選utf8即可。不過使用phpMyAdmin import 有檔案大小的限制,可先把sql檔分成幾個檔案。 ◎ 最後記得檢查看MySQL的my.cnf設定檔內要加入以下設定 [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 default-collation=utf8_general_ci |
3 樓住戶:gt 發表時間:2015-08-08 |
MySQL 4.0是以big5編碼,許多big5沒有的字就難以呈現,雖然在4.1之後版本有支援utf8編碼,但是如何將4.0資料庫內以big5編碼的資料正確轉到最新版MySQL 5.1以utf8編碼,就得花些功夫。 1.備份資料庫: C:\mysql\bin>mysqldump -u root -pYourPassword --default-character-set=latin1 --add-drop-table YourDbName > db_latin1.sql 2.轉換編碼: (1).首先,你必需先準備EmEditor,然後用它開啟你4.0的db_latin1.sql檔 (2).在最前面加入以下三行。 SET NAMES utf8; SET CHARACTER_SET_CLIENT=utf8; SET CHARACTER_SET_RESULTS=utf8; 為了確保新的MySQL5.1資料庫資料表為utf8編碼,必須變更原來db_latin1.sql內容中CREATE TABLE的編碼字串, 以編輯器搜尋取代方式找「);」改成「) ENGINE=MyISAM DEFAULT CHARSET=utf8;」 為了解決big5中的「許功蓋餐…」等字元在T-SQL插入字元的欄位後方,造成欄位對應不正確,必須統一取代: 將文字內容「?,'」以「','」取代 將文字內容 「\',」以「',」取代 (3).選另存新檔->類型不用改,編碼選utf8,加入BOM那邊不要勾選,換行方式選 僅有 LF(UNIX)->存檔newdb.sql (或者使用convertz將big5編碼檔,轉成utf8編碼格式) 3.設定MySQL確認資料庫編碼為utf8 修改my.ini,在client區段加入default-character-set=utf8,如下 [client] default-character-set=utf8 [mysql] default-character-set = utf8 4.倒回資料: (1). 新增資料庫 mysql> create database newdb -> \g mysql> use newdb (確認新資料庫建立無誤) (2). 執行mysql匯入資料 C:\Program Files\MySQL\MySQL Server 5.1\bin>mysql -u root –p YourPassword newdb < d:\mysql\newdb.sql |
4 樓住戶:dddd 發表時間:2015-08-08 |
http://cym6112.blogspot.tw/2012/01/mysql-big5-to-utf8.html 昨天要幫老婆大人把客戶從MySQL dump出來的資料,從原先的Big5轉成UTF8再塞進去MySQL裡。原始檔案有將近900M,有點大所以大部份的編輯軟體都拿他沒輒,所以就開到 Linux裡用iconv直接轉,轉是轉完了但是總會有"\?"的問題造成匯入不成功,去問了一下G大這有可能是換行字元的問題,為了快速找到解決方案就 先把問題的研究先放著,解決問題優先。 [Navicat]是一套資料庫管理工具支援多種資料庫,可下載試用。它本身提供Data Transfer的功能可以直接讓線上的資料庫轉到另一個資料庫或輸出成檔案。轉換細節如下:
環境:Server: VMwarePlayer3.1.5 + Debian6.0.3 + MySQL 5.1.49 Client: WinXP with SP3 + Navicat10
|
5 樓住戶:fff 發表時間:2015-08-08 |
http://phpbb-tw.net/phpbb/viewtopic.php?f=2&t=48420 其實也只是很意外的插曲,本來想弄phpMyAdmin的HTTP認證功能,中間把說明文件的意思看反了,以為要把MYSQL升級到4.1.2版以後才能用,後面才發現那是對4.1.2以前版本設定用的。 |
6 樓住戶:2333 發表時間:2015-08-08 |
[分享]mysql與phpMyAdmin顯示或儲存utf-8問題集 mysql big5 轉 utf-8 速記 當網站改版時,要把以往mysql的big5資料轉換成utf-8時,常常會是個頭痛的問題。 要轉換,你的新舊資料庫都有phpmyadmin的介面,另外還得有big5->utf-8的工具,在windows上中文轉換工具首選為 ConvertZ ,在linux上得轉碼工具為iconv。 [全文:] 首先,檢查看看phpmyadmin在輸出csv檔案時會不會有問題。 stripslash為把字串去掉反斜線的函式,但是在處理big5碼的時候便會碰到難題,他會將big5的斜線去掉,以至於轉出來的文字變成亂碼。新版的phpmyadmin已經沒有這個問題,但是要看看舊版有沒有在轉出的時候加上這個函式,得把他去掉 編輯 phpmyadmin/libraries/export/csv.php 在 function PMA_exportData 裡頭,找到while迴圈,並找找看有沒有stripslash的function: while ($row = PMA_DBI_fetch_row($result)) ..... $row[$j] = stripslashes($row[$j]); 把function拿掉,留下 $row[$j]; 就好。 第二,輸出csv資料。到phpmyadmin的輸出頁面,針對舊資料庫一次一個表格輸出。調成csv匯出,存檔。 第三,匯出資料庫的結構schema。到phpmyadmin的輸出介面,針對全部的表格,調成SQL輸出,並且不要包含資料,下載回來的是單純的sql結構檔。 第四,打開convertz,對剛剛轉下來的csv轉換成utf8的動作。 第五,到新資料庫,先把剛剛.sql的結構給匯入,建立好空的table格式。如果在mysql4.1以後,如果有預設連線校對,匯入的表格統統都會用該連線校對設定。 第六,一個一個資料表,匯入剛剛存下的csv檔。 最後,檢查看看新資料庫有沒有亂碼。 這應該是個笨方法,不過目前沒有出現中文轉換的問題。如果一直試不成功,不妨也可以試看看這個笨方法。 |
姓名: | |||
佈告內容: | |||
其他選項: | |||
|