0
我在數據庫中有一些文本。我使用法語和英語。法語有口音和一些特殊字符,如ç
。我使用Mamp,MySQL和PHP。存儲和輸出帶有重音的文本
我有排序規則latin1_swedish-ci
(默認值)。我試過utf8_general_ci
,結果是一樣的。 如果我在一個html頁面中使用,我有這個頭:<meta charset="UTF-8">
作爲一個例子,在數據庫中我有「voilà」。
當我回聲從數據庫中的HTML文本:
$con = mysqli_connect("localhost","root","root");
if (!$con) {
die('The connexion failed: ' . mysqli_error());
}
if (!mysqli_select_db($con, 'prova')){
echo "Connection with database was not possible";
}
$result = mysqli_query($con, "SELECT * FROM test1
WHERE id='1' ")
or die(mysqli_error());
while($row = mysqli_fetch_array($result)) {
$text = $row['first'];
echo $text; //I see: voil�
echo htmlentities($text); //I see nothing
echo utf8_encode($text); //This works: I see voilà
}
- 爲什麼
htmlentities
不起作用? - 是
utf8_encode();
要走的路嗎?當我輸出數據庫中的東西時,我必須使用它?如果排序規則已經是UTF8
,爲什麼我必須使用它?有沒有更好的方法來存儲和輸出帶有重音的文本到MySQL數據庫中?
[獲取特殊字符的可能的複製用PHP創建MySQL數據庫](http://stackoverflow.com/questions/15892610/getting-special-characters-out-of-a-mysql-database-with-php) – ItsGreg
@ItsGreg。另一個並不影響我的問題。我到了類似的解決方案,但問題是爲什麼 – Nrc
'htmlentities()'應該不會返回任何東西,如果你的字符串是'voilà'。這個字段在phpMyAdmin中是什麼樣的? – rybo111