2013-06-03 73 views
0

好的&我有一個查詢。有什麼方法可以從它的唯一編號顯示Unicode符號。例如。我有Integral符號​​(∫)&它的Unicode編號分別爲'U + 222B'和'&#8747';我可以通過打印下面的HTML代碼來顯示符號。使用PHP顯示它的數字的Unicode字符

echo "& #8747;"; //Displays Integral [∫] symbol if we remove space after Ampersand. 

但是對於Unicode編號,我們可以實現相同嗎?因爲在我的一個網站字符中編碼不正確。它只是顯示如下的Unicode數字。

%u03A8 %u0D24 etc. 

請分享您的想法。提前致謝。

回答

0

不知道這是否會與客戶合作,但值得一試:

echo mb_convert_encoding('&#' . intval(0x0D24) . ';', 'UTF-8', 'HTML-ENTITIES'); 
+1

這可能是一個評論..沒有必要回答。 –

+0

更改我的答案,思考得太快...... – silkfire

+0

@silkfire%u0D24&%u03A8的等效Unicode字符分別爲'ത'和'Ψ'。但你的解決方案給'¨$'! –

1
%u03A8 %u0D24 etc. 

這看起來像JavaScript的window.escape()函數的輸出。改變您的JavaScript代碼,改爲撥打window.encodeURIComponent(),並在必要時使用urldecode()解碼PHP端的輸出。

如果損壞的字符串已經存儲在數據庫中,你可以嘗試清除它們使用類似的代碼如下:

$s = preg_replace_callback('/(?:%u[0-9A-F]{4})+/', function ($m) { 
    return mb_convert_encoding(
     hex2bin(str_replace('%u', '', $m[0])), 'UTF-8', 'UTF-16BE'); 
}, $s);