2013-01-23 46 views
1

我嘗試輸出與PHP包含破折號和短破折號MySQL數據庫領域,但儘管行輸出,這些短線的值並不。長劃線和MySQL數據庫短破折號與PHP

據我所知,這些都是應該在適當的英語使用的字符,因此我不認爲我應該被剝離出來或用其他功能(如連字符)替換它們。

由插入之前加入這個代碼,我能夠得到長劃線和短劃線到數據庫中正確(而如果沒有這條線,我看到不想要的字符代替):

mysql_query('SET NAMES utf8'); 

但是,值將不會輸出。數據庫表和它的字段使用utf8_general_ci整理和我有我的PHP頁面這些行:

header('Content-type: text/html; charset=utf-8'); 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

我輸出,像這樣的值:

echo nl2br(htmlentities(preg_replace("/[\r\n]+/", "\n\n", $row['someText']))); 

如果我輸出的沒有格式的價值,我看到這個問號字符:

有誰知道如何解決這個問題?我是否強制用連字符代替它們,儘管這在語法上是不正確的,或者有辦法將它們輸出到數據庫中嗎?

+0

你有多確定他們在數據庫中被編碼爲UTF-8? –

+0

在MySQL數據庫的前端,它顯示了表格的排序規則,列的排列規則都是'utf8_general_ci'。這是你的意思,還是其他地方有更多的編碼?如果是這樣,我該如何檢查?謝謝。 –

+0

選擇時將其轉換爲字節。 –

回答

0

我從數據庫中檢索數據前加入相同的MySQL命令,這解決了這個問題。

mysql_query('SET NAMES utf8'); // Use utf-8 

我不知道爲什麼需要,但我會進行調查,看看我能做出這樣的默認值。

+0

'mysql_set_charset()'是你應該使用的。我不確定你可以設置一個默認的MySQL客戶端編碼,PHP會監聽 - 在每個連接上調用mysql_set_charset()都是安全的。 –

+0

這是什麼PDO版本? – relipse

相關問題