2011-03-14 139 views
2

在一個單獨的文件陽明海運後我有:
flags: [<img src="/images/cms_bo/icons/english.png" alt="English"/>]奇怪的字符()出現做html_entity_decode

當我打電話到這一點我的代碼,它沒有解釋,所以我用html_entity_decode

它的工作原理,但我只有1怪字符之前我的形象

<?php echo html_entity_decode($form['lang']->render()); ?> 

我所有的文件都UTF8編碼。你有什麼想法解決這個問題嗎?

PS:

 public static function getI18nCulturesForChoice() 
    { 
     return array_combine(self::getI18nCultures(), self::getI18nCulturesFlags()); 
    } 
+2

顯示一些相關的代碼將有助於 – 2011-03-14 16:12:34

+0

的問題還不是很清楚。爲什麼你首先使用'html_entity_decode'?您的描述中沒有實體。 – Jon 2011-03-14 16:14:11

+0

@jon @shakti因爲否則我的代碼不解釋。它不會顯示圖像,只是English(只是字符串) – 2011-03-14 16:21:47

回答

10

嘗試使用html_entity_decode($form['lang']->render(),ENT_QUOTES, "UTF-8");

+1

謝謝你終於修好了;-) – 2011-03-15 09:43:03

0

也許你的文件有一個字節順序標記(BOM)集。

+0

我不這麼認爲,因爲沒有html_entity_decode,它會輸出字符串,因爲它確實是。沒有奇怪的字符 – 2011-03-14 16:27:19

+0

,我使用textmate :(默認情況下在Mac的Textmate,它創建沒有任何BOM標記的UTF-8文件。) – 2011-03-14 16:28:11

1

到PHP 5.3.3之前,默認字符集爲html_entity_decodeISO-8859-1!如果你使用UTF-8,你需要使用函數的第三個參數來告訴它處理UTF-8而不是假定ISO-8859-1。

這是盲目地假設您使用的是舊版本的PHP。

如果使用PHP的新版本,你,可以考慮使用iconv//IGNORE//TRANSLIT標誌嘗試和之前刪除任何壞UTF-8序列通過串入html_entity_decode

+0

@Charles Unfortunalty,這是一個很好的領導,但我使用PHP 5.3.3: '( – 2011-03-14 16:39:31

+0

我悄悄地編輯了我的帖子來處理這種可能性, 是「我無法表示那個角色」字形,所以很明顯某些東西正在丟失某處... – Charles 2011-03-14 16:41:21

+0

仍然不是:'(,(<?php echo html_entity_decode(iconv('UTF-8','// IGNORE // TRANSLIT',$ form ['lang'] - > render()));?>) – 2011-03-14 16:57:16