【問題】請教MYSQL中文亂碼問題 欲改成utf8。急..



贊助商連結


apencilbox
2008-10-10, 08:42 AM
小弟不只網站上顯示出來的是亂碼
連PHPMYADMIN裡面去看每筆存進去的資料也都是亂碼跟問號
目前自己做的會做的做到這個部分
我執行以下的 SQL 指令:SHOW VARIABLES LIKE 'character\_set\_%'
得到的結果如下
character_set_client  utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results  utf8
character_set_server  latin1
character_set_system  utf8

而網頁部分
所有 *.php 以 utf8 存檔
html code 也指定了
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />:

我上網找了一些資料
很多人說改改my.cnf
但是我是用美國虛擬主機Lunarpages 所以應該事不能改吧?
那請問還有甚麼方法可以解決這個問題

不好意思剛接觸..

贊助商連結


bareck
2008-10-12, 07:32 PM
你是由其他地方搬移到美國空間嗎?
原本的mysql版本、資料庫編碼是什麼,新空間版本是什麼?

sunrays
2008-10-21, 10:24 AM
有詳細版本資訊會更好喔~

之前有過一開始是使用latin1...
要放到虛擬主機上使用UTF8會變成亂碼...

如果可以你可以先把資料先dump到自己本機的db,
再轉utf8 dump出來..再重新import到虛擬主機的db... 可以試試~

參考一下:
http://dba.tw/index.php?topic=126.0
http://dba.tw/index.php?topic=69.0

Fabian C
2008-10-21, 11:52 AM
過去我在用PhpBB的論壇時,也被latin1和UTF8整了老半天,
若主機商設定有問題,也只是會讓網頁顯示utf8正常,但在phpMyadmin看到亂碼。

而你的問題應該是根本沒有完成utf8的轉碼,才會網頁和phpMyadmin看到都亂碼!

我以PHPBB3為範例:

1. 先用mysqldump 抓回latin1 的格式存成 phpbb3_latin1.sql

2. 編輯抓回來的SQL檔,把資料庫裡的latin1字串替換成utf8
可下載回來用ultraEdit編輯, 或直接用SSH登入主機用UNIX的vi編輯器來編輯<-較建議

1. vi phpbb3_latin1.sql (用 vi編輯器,打開抓回來的SQL檔)
2. :1,$s/latin1/utf8/gc (在vi下命令, 把latin1全都替換成utf8)
3. :w phpbb3_utf8.sql (存檔成 phpbb3_utf8.sql)
4. :q (離開vi)

3. 這時phpbb3_utf8.sql只是內文latin1字串改成utf8,但還不是utf8的編碼,
所以,你必須用big5轉utf8的軟體對資料庫轉碼

big5轉utf8的軟體有:
下載回來用CoverZ轉成 utf8,包含沖碼反斜線(需勾選繁體中文)
在線上用PHP源動力的小程式 http://www.phpforce.cn/bbs/showthread.php?t=108

會不會轉成功?大多是看沖碼有沒有搞定....也可能會遇到某些沖碼而造成資料遺失

4. 轉好後,SQL檔內的latin1字串已改成utf8,且檔案編碼也已改成utf8。
再用mysqldump 還原回去,論壇或部落格程式則要設成utf8的編碼。
(若用PHP源動力的程式線上轉碼,必須先還原回去再轉)