2010-11-11 60 views
0

我編程系統,這樣的用戶可以編輯自己的帖子內容。簡化它是一個textarea /輸入字段,它存儲在一個數據庫和一個檢索它的頁面。問題是,我認爲編碼不好,因爲字符串像「Ã」或什麼(phpmyadmin視圖)存儲在數據庫中。PHP編碼(猜UTF-8)

插入頁面:

  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  2. 我插入mysql_real_escape_string($_POST['field']);

輸出頁面:從數據庫

  1. 對象。
  2. htmlspecialchars($object->field);

但預期是: 輸出頁:

  1. 從數據庫對象。
  2. htmlentities($object->field);,對吧?

爲什麼不存儲在MySQL的正確的數據?

回答

4

如果你的數據庫編碼設置爲UTF-8,你需要設置轉院編碼成UTF-8,太。要做到這一點,你必須查詢

SET NAMES utf8; 

在插入表之前。

+0

+1這是必要的,看看在phpMyAdmin正確的編碼。然而,它通常是沒有必要得到同樣的,將被放置在DB的。 – AndreKR 2010-11-11 11:19:22

+0

這是事實安德烈,但如果你連接到數據庫使用了錯誤的字符集,那麼你實際上可能存儲在錯誤編碼數據數據庫表。這顯然是不受歡迎的。 – Hammerite 2010-11-11 12:46:33

2

是數據庫連接 UTF-8?請記住,這不是默認編碼,您必須自己明確設置它。

1

你要告訴你餵它UTF-8ヶ輛:

htmlentities($text, ENT_COMPAT, "UTF-8"); 

否則它假定它獲得ISO-8859-1。

+0

也許我正在尋找不同的東西,因爲我在數據庫中放置了一些東西(「Testé」),並且它與htmlentities($ text)一起顯示。如何在沒有phpmyadmin的幫助下正確插入「Testé」? – Simon 2010-11-11 11:27:30