Re: [系統] MySQL 5.1 / MySQL 3.23 在big5上不相容
不是加個\就好了嗎@@
你可以寫個小程式去檢查中文第二個byte
不寫程式的話
我有個拙作
https://github.com/buganini/bsdconv/
Download裡面有windows用的版本
你可以用
bsdconv ascii,big5:big5-5c,big5,ascii in.sql out.sql
就可以自動在適當的地方加上\
--------------------------------------
關於big5 latin1
有些地方因為不是使用嚴格的cp950 (有UAO之類的)
所以被迫使用latin1
我目前的解法也是改phpmyadmin
偷工減料一點的話, 通常會遇到的只有big5跟utf-8
那就把語系檔砍一砍, 留下中英文
或是複製一份中文改個名字
然後在連線的地方根據語系去set names
這樣就可以簡單用選擇語系切換
--------------------------------------
就我個人的經驗
mysql轉換應該沒這麼悽慘才對
其中一定有什麼誤會
※ 引述《EAFV (流浪貓)》之銘言:
: 我不確定這能不能幫到你什麼
: 不過我當初的轉換也是搞了很久都沒辦法
: 我那資料庫還更麻煩,有一堆unicode補完產生的日文
: 因為程式不支援的關係,也沒辦法治本的直接轉UTF8
: 之後是用土法鍊鋼的方式
: 寫程式去把資料一筆筆撈出來SET為big-5之後寫入到新版的mysql裡
: 至於校對方面
: 我自己測的情況是big5_bin跟big5_chinese_bin轉過去都會有問題
: 後來是設定為binary
: 只是資料庫管理的部份,很多不支援big-5
: 我後來是自己改個另外big-5專用的phpmyadmin來用...
除非說當初每個table設定都不一樣
不然只要一次mysqldump出來的資料沒有亂碼
都可以簡單解決的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.231.23
補充一下
跨這麼大版本升級還有可能遇到的問題是SQL語法不相容
有些人是用phpmyadmin去dump 應該也是可以
我是偏好用新的mysqldump去dump舊的mysql-server
通常再改一改.sql處理一下編碼問題
加個set names 就可以塞回去了
然後新版encoding/collation有一個很重要的地方
就是最好在create database的時候就指定好正確的編碼
這樣底下的其他設定就會自動跟著對
※ 編輯: buganini 來自: 220.135.231.23 (12/25 01:02)
推
12/25 01:03, , 1F
12/25 01:03, 1F
不是不吃 只是要escape
現在還有很多系統是big5 也在mysql 5上跑得好好的
※ 編輯: buganini 來自: 220.135.231.23 (12/25 01:06)
如果db裡面是設定big5
那就同我在原文推的
把.sql轉成utf-8
然後在.sql前面加上
set names "utf8";
再倒回去
這個動作不是要把資料庫變成utf-8的
是讓mysql吃utf-8進去 然後轉成big5存
吃utf-8進去就不會有\的問題
※ 編輯: buganini 來自: 220.135.231.23 (12/25 01:09)
database編碼設為X
client連上去set names Y
mysql就會自動在X,Y之間轉換
所以設定正確的時候
UTF-8,Big5的database都可以直接用未經修改的phpmyadmin看到正確的資料
只有被迫用latin1存big5的才會有問題
(因為latin1 (應該就是iso-8859-1吧)
從00~7F~FF都有定義 所以可以當binary用
只是collation就破破的)
※ 編輯: buganini 來自: 220.135.231.23 (12/25 01:11)
推
12/25 01:10, , 2F
12/25 01:10, 2F
推
12/25 01:13, , 3F
12/25 01:13, 3F
你出問題的的byte sequence是fbf3
mysql5的big5用的是cp950的表
我在http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
裡面找不到
也就是說他對mysql5來說根本就是illegal sequence
你可以把他取代為A148 (全形問號)
厄.. 其實他應該不是全形問號吧?
但我的terminal也不吃那個 所以我看到的就是全形問號XD
或是成為被迫使用latin1的族群
然後轉成utf-8去塞的話
也不會有illegal sequence的問題
進去的話有可能會transliterate成某個適當的符號
或是變?
※ 編輯: buganini 來自: 220.135.231.23 (12/25 01:20)
推
12/25 01:18, , 4F
12/25 01:18, 4F
推
12/25 01:19, , 5F
12/25 01:19, 5F
※ 編輯: buganini 來自: 220.135.231.23 (12/25 01:25)
→
12/25 01:28, , 6F
12/25 01:28, 6F
→
12/25 01:33, , 7F
12/25 01:33, 7F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 5 之 8 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章