看板 PHP 關於我們 聯絡資訊
昨天晚上針對這個問題研究了一下, 發現:其實這些字是可以用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