2010-09-27 108 views
15

我在本地站點中收到此錯誤。htmlspecialchars():參數中的多字節序列無效

Warning (2): htmlspecialchars(): Invalid multibyte sequence in argument in [/var/www/html/cake/basics.php, line 207] 

有沒有人知道,什麼是問題或應該是什麼樣的解決方案呢?

謝謝。

+2

郵行207 207請 – 2010-09-27 12:56:59

回答

13

確保指定的編碼設置爲UTF-8,如果你的文件被編碼爲這樣:

htmlspecialchars($str, ENT_COMPAT, 'UTF-8'); 

htmlspecialchars默認字符集是ISO-8859-1(如PHP的V5.4默認字符集被轉換爲'UTF-8'),這可能解釋爲什麼事情遇到多字節字符時會變得無用。

+0

線就在這裏。 $ charset ='UTF-8'; htmlspecialchars($ text,ENT_QUOTES,$ charset); //第207行 – gautamlakum 2010-09-27 13:06:39

+1

對於我來說,這個問題最終成了相反的結果,當我試圖在htmlspecialchars中將其編碼爲'UTF-8'時,我的數據的字符集實際上是'ISO-8859-1'。我將charset參數轉換爲'ISO-8859-1',解決了這個問題。至少,直到我完全可以將所有內容更新爲'UTF-8'。 – Kzqai 2012-11-06 17:37:24

+5

從PHP 5.4.0開始,'htmlspecialchars()'的第三個參數的默認值是''UTF-8'' - 這個答案應該被更新。 – 2013-03-22 12:03:53

4

你餵養損壞的字符數據轉換成的功能,或不指定正確的編碼。

我前一陣子有這個問題,舊的行爲(之前PHP 5.2.7我相信)是儘管腐敗返回字符串,但由於該版本將拋出此錯誤信息。

我的解決方案涉及使用// IGNORE改性劑去除損壞的數據通過iconv編寫腳本來養活我的琴絃。

(我們有其具有以UTF-8某些字符串,一些在Latin-1的通常與在列定義錯誤字符類型損壞的數據庫)。

(看着到大肚的回答的評論,我會通過看(與播放)$字符集變量的內容開始。

+0

我同意。我通過iconv或mb_convert_encoding()傳遞了用戶數據,「from」和「to」字符集相同。通常可以選擇去除無效字符。 – 2010-09-28 03:58:53

+0

這裏也損壞了數據,mb_convert_encoding($ var,'UTF-8')完成了這項工作。 – 2012-07-25 02:59:07

0

這實際上是最常見的錯誤,我得到的一個。

有時候我不使用__()翻譯 - 只是普通的德國含有AOU文本 有介意文件的編碼尤爲重要

所以一定要妥善保存包含特殊字符是UTF8文件。

+0

鏈接已損壞。 – billynoah 2014-05-06 02:04:03

1

正確的代碼,爲了不收到任何錯誤是:

htmlentities($string, ENT_IGNORE, 'UTF-8') ;

除了這個,你也可以使用str_replace替換一些壞人的角色,以您的需求,然後使用ヶ輛功能。

看一看這個rss feed它取代了更大的HTML標誌GT;當閱讀RSS源時可能看起來不太好看。你可以用「 - 」符號或「)」等代替它。

1

有同樣的問題,因爲我在utf-8字符串上使用substr
錯誤很少出現,看似隨機。只有在多字節字符上切斷字符串時才發生錯誤!

mb_substr解決了這個問題:)

相關問題