作者eric77712 (心要讓你聽見)
看板PHP
標題Re: [請益] 許功蓋這些字無法新增到資料庫?
時間Wed Jan 10 08:22:06 2007
昨天晚上針對這個問題研究了一下,
發現:其實這些字是可以用BIG5存到MySQL的,
也不需要再以別的同音字來取代,
我想,你會存不進去,
可能是因為你再將資料送進MySQL之前,
有加了stripslashes這個函式,
我的PHP之前也是有加,再輸入包含 ' \ 等字元時,
資料庫都會發生錯誤而拒絕寫入,
我昨天試著把stripslashes拿掉,
讓他直接以最原始的方式寫入MySQL,
結果發現一切OK,就連我直接輸入 ' \ 等符號,
他也讓我過關了,我想,MySQL本身應該有對資料做過處理,
而我們之前有自己加了stripslashes,
這樣反而會讓資料庫出錯,因為副副德政,
所以,對於特殊字元的處理方式,
還是留給MySQL自己想辦法,
我們就不要再多套用一些函式,以免得到反效果。
※ 引述《eric77712 (心要讓你聽見)》之銘言:
: 因為這些中文字的內碼有 \ 這個符號,
: 一班MySQL是拒絕存取這個符號到資料庫中,
: 印象中 ' 這個也不行,
: 不過我之前只有注意到 ' 不行,
: 沒想到連 \ 也不行,
: 剛剛拿我寫的留言板來開刀,
: 結果正如你所說的,
: 那些中文字中有包含 \ 內碼的,
: 再寫入十,資料庫會發生錯誤而放棄寫入,
: 我有一個解決的辦法,
: 就是利用PHP的某個函式,
: 將MySQL拒絕的特定字元轉換成全形的符號,
: 再送入資料庫中,這樣就可以闖關成功了,
: 但是由於現在碰到的問題本身來源就是一個雙位元組字,
: 所以你可以考慮在送進資料庫前,先把那些有特定字元的中文字,
: 轉換成另外一個字,例如:許;詡。
: 這是我的想法,不知道有沒有人有更好的解決辦法。
: 那個函式用法如下:
: $Temp=str_replace("許","詡",$Temp);
: 希望對你有幫助。
: ※ 引述《htk (我要降二軍啦!!!!!!!!)》之銘言:
: : 我寫了很簡單把網頁的form輸入的文字insert到MySQL資料庫的程式
: : 一般中文字都沒問題
: : 可是就是 許,珮,餐,功...這些字不行
: : 請問一下應該怎麼解決呢?
: : 我的MySQL版本是5.0.27
: : phpMyAdmin 2.9.1.1
: : MySQL 文字編碼: UTF-8 Unicode (utf8)
: : MySQL 連線校對: utf-8_bin
: : 資料庫的欄位的校對: latin1_swedish_ci
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.23.148.202
推 buganini:還是UTF-8王道 01/10 08:41
→ antontw:沒有永遠的王道 01/10 09:10