----------------------------------------------------------
BIG-5 因為存在衝碼字的問題
PHP 在將許蓋功.....等衝碼字,存入資料庫時
會自動在後面加上反斜線:例如:許\\ 蓋\\ 功\\
當把資料庫匯出 (mysqldump)
使用轉碼軟體進行轉換後,這些「反斜線」也會被保留下來
由於匯出的資料庫單一檔案 .sql, 會保有 SQL 語法
SQL 語法中,規定字串必須用單引號 ' 框住
假設有一行內容剛好衝碼字是在結尾\r
就會變成這樣:成功\\'
而反斜線 \ 在 SQL 語法中有特殊意義,是脫逸字元
\' 代表忽略這個單引號,把單引號 ' 當字串處理
也就是說會變成字串不再被單引號 ' 框住
這在 SQL 語法中,是屬於錯誤語法
簡言之,當要匯入資料庫時,反斜線將會造成 SQL 語法錯誤,而無法匯入\r
爬文後,找到的解決的方法,大多是:
用文書編輯器開啟 .sql 檔進行「手動編輯」
來解決這個問題
手動去編輯高達幾萬行的純文字檔
雖然是累了點,總歸來說,還是有可能辦到\r
但是,有一個無法克服的問題是:
假如資料庫高達幾百 MB
根本沒有任何一款文書編輯器,能開啟這樣大的檔案!
開了電腦就當機了,完全無法操作 Orz
因此在下苦思其它解決之道,終於頓悟出一個方法.....
另類解決方法:
----------------------------------------------------------
convertZ 不只提供編碼轉換功能\r
它還能進行簡繁體轉換
更厲害的是有修正兩岸詞彙的功能\r
換句話說,convertZ 具有「取代字串」的功能\r
但這個功能,只能使用在簡繁互換,是比較麻煩的地方\r
需利用一些小技巧,也就是要轉兩次
先「繁體 → 簡體」,再「簡體→UTF-8(繁體)」

新增自訂詞彙表\r

自訂詞彙表,輸入衝碼字,將有反斜線的,全部轉成無反斜線

繁體 → 簡體,不進行詞彙修正取代,以增加轉換速率

進行實驗,建立一個文字檔,內容:許\\ 蓋\\ 功\\
第一次轉換,繁體 (BIG-5) → 簡體
由於不套用「詞彙修正取代」,此時反斜線仍然存在\r

第二次轉換,簡體 → UTF-8 (繁體)
此次套用「詞彙修正取代」
由預覽中可發現,反斜線已經被去掉了
且也已經轉成 UTF-8
-------------------------------------------------------------------------
不知道各位大大覺得這個方法如何?
但使用這個方法的前提是:
必須知道 BIG-5 到底存在哪些衝碼字,才能建立完整「詞彙轉換表」
以便進行字串取代,去掉反斜線
換言之,必須知道:
PHP 到底是會把哪些字,後面加上反斜線?
請問有大大知道這方面的資訊嗎,是否可提供一下
謝謝




