我有一個問題,目前爲止我無法弄清楚,我很感激任何幫助。當在PHP中使用UTF8的hmtlspecialchars時,Umlaute不顯示
我有以下簡單的代碼:
<?php
header("Content-Type: text/html; charset=utf-8");
$body .= "begrüßen zu dürfen";
echo htmlentities($body);
echo htmlentities($body, ENT_COMPAT,'UTF-8');
?>
第一回聲作品,而第二個返回一個空字符串。爲什麼會發生?
變量$ body是一個像「begrüßen zu dürfen
」這樣的固定字符串和來自帶有UTF-8的mysql數據庫的一些文本的組合。如果我想正確顯示數據庫中的文本,我們將其稱爲$ data,我需要使用htmlentities($data, ENT_COMPAT,'UTF-8');
,所以我想我可以使用htmlentities($body, ENT_COMPAT,'UTF-8')
來顯示整個組合文本(部分來自數據庫,部分來自固定字符串) 。但是,這不起作用。
任何想法如何解決這個問題?
你的文件是以UTF-8保存的嗎?由於固定字符串是不工作的,很可能你的php文件實際上不會保存在UTF-8 – Esailija 2012-07-19 12:47:23
不,它是在cp1252(不管它是什麼:))。如果我這樣做,並使用htmlentities($ body,ENT_COMPAT,'UTF-8')它現在顯示一些奇怪的字符,如 。另外,如果我將文件代碼更改爲UTF-8,則在eclipse文本編輯器中將「ü」顯示爲奇怪的字符。有沒有一種方法可以在eclipe中像往常一樣輸入?但是在網頁上顯示正確,並且在連接時與來自DB的某些utf-8編碼數據一起正常工作?非常感謝! – user1513073 2012-07-19 12:54:51
傾聽我們所說的話,將您的文件轉換爲UTF8。這將解決你的問題m8。 – Peon 2012-07-19 13:01:25