2012-03-13 103 views
0

我我的形式正從textarea的輸入特殊字符訪問textarea的內容時特殊字符在PHP

所以,如果我輸入下面的文本

菲爾布里克,其「大洋深處: Whaleship Essex的悲劇「敘述了梅爾維爾 沉船的真實靈感,輕描淡寫地學習了他的博學。

當我在php中訪問它時,我得到以下內容。

菲爾布里克,其“In海之心:在 WhaleshipEssexâ€悲劇講述了 Melville’的沉船現實生活中的靈感,舉重若輕地博學。

在訪問文本之前,我嘗試了下面的內容,但替換不起作用。當我將 複製粘貼到代碼或其他東西中時,這些特殊字符不匹配嗎?

$string = htmlspecialchars($_POST["t"]) ; 
$string = html_entity_decode($string, ENT_QUOTES, "UTF-8"); 
$string = str_replace('“', "\"", $string); 
$string = str_replace('’', "'", $string); 

回答

1

您所看到的內容可能沒有任何問題。您可能不需要用修正或其他方式來修改$ _POST。這可能是因爲你正在尋找準系統瀏覽器輸出。

在你用類似print_r($_POST); die;隨地吐痰出來調試這種情況下,請確保它上面的地方在你的頁面你有元一行字符編碼設置爲UTF-8:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

這將確保智能角色(大概是從某處粘貼的)在屏幕上正確渲染。

完全無關:優秀的書,順便說一句。用憔悴的水手囤積他們的骨頭來愛起始場景。

+0

像魅力工程!非常感謝!!! – vaichidrewar 2012-03-13 20:19:13

1

實際上,你不是一個普通的單引號和雙引號,但有些花哨的Unicode版本: &#x201c; &#x201d &#x2019

嘗試utf8_decode。順便說一句你使用什麼編碼,Windows-1250

+0

如何找到正在使用的編碼?我嘗試過它製作的utf8_decode:Philbrick,他的「在海洋的心臟:鯨魚艾塞克斯的悲劇」講述了梅爾維爾沉船的真實靈感,輕描淡寫地學習了他的博學。那麼現在輸出中的特殊字符是不同的? – vaichidrewar 2012-03-13 20:06:18

+0

echo「編碼方案是:」。 mb_detect_encoding($字符串);產生的UTF-8 – vaichidrewar 2012-03-13 20:08:55