2012-09-12 70 views
0

我正在執行以下語句。在php中編碼一個字符串

$mystring = <<<EOT 
UPDATE sites_niche SET `short_review` = REPLACE(`short_review`, '’',"'"); 
EOT; 

但是,它不工作,因爲它會工作,如果我把它放在我的phpmyadmin。罪魁禍首是這個不好的字符’這個字符根本就沒有被替換。

我試圖打印更新語句到屏幕上,我得到這個:

UPDATE sites_niche SET `short_review` = REPLACE(`short_review`, '’',"'"); 

我認爲字符串獲取只要它進入數據庫亂碼。我的問題是 如何編碼這些字符集’以便它們一旦進入數據庫就不會出現亂碼。

+2

請有http://www.joelonsoftware.com/articles/的讀Unicode.html和https://dev.mysql.com/doc/refman/5.0/en/charset.html – VolkerK

回答

1

有我能在你的帖子看到兩個問題。

如果你不知道這是你可以使用PHP mb_detect()函數來檢查的字符編碼格式,並從PHP中使用所識別的格式的解決方案,下面

  1. 更新到MySQL的編碼格式

解決方案: - 你的PHP代碼它負責連接MySQL數據庫應該使用

mysql_set_charset (string $charset [, resource $link_identifier = NULL ]) 

2。當你PRI NT出現亂碼

解決方案: - 必須設置頁面中的DOCTYPE聲明的字符編碼,否則你會看到這個亂碼

+0

我不能猜測它的編碼不工作..看到這個:http://stackoverflow.com/questions/ 910793/detect-encoding-and-make-everything-utf-8 –

+0

嗯我有一個類似的問題,同時保存谷歌翻譯把內容放到db中,修復mysql的charset解決了這個問題。正如你所說,我知道谷歌服務於UTF-8,看起來我必須破解phpmyadmin並回復你並解釋你的查詢如何在phpmyadmin中運行,WRB很快 –

+0

什麼是你正在使用的Collat​​ion列mysql在你正在運行這個查詢的表中 –