2015-04-29 310 views
0

我嘗試在vBulletin論壇中構建標記系統,它工作正常。將Unicode轉換爲字符

但我有一個問題在快速編輯後(使用AJAX)。

如果我在希伯來語中寫字符,它將替換unicode中的字符。

實施例I在後寫:

חחחחח לא?test!! 

這使得此:

%u05D7%u05D7%u05D7%u05D7%u05D7 %u05DC%u05D0?test!! 
+0

你知道你被允許還專這裏真正的問題?! – Rizier123

回答

3

看起來好像不推薦的SCRIPT關閉escape()被用於串進行編碼。如果您通過JavaScript在網頁中迴應了此問題,則可以使用unescape() - 請參閱this fiddle。如上所述,但這已被棄用。

應該替代地使用的功能是encodeURIComponent()代替escape(),和decodeURIComponent()代替unescape()。然後,您可以在PHP中使用urldecode()來獲得您想要的結果,如果這是必要的步驟。


鑑於當前設置,將Unicode字符的HTML適當的實體在瀏覽器中渲染轉換,以下應該做你想要什麼:

$str = preg_replace_callback('/%u([0-9a-fA-F]{4})/', function ($match) { 
    return mb_convert_encoding(pack('H*', $match[1]), 'HTML-ENTITIES', 'UCS-2BE'); 
}, $str); 
+0

如果我不嘗試在帖子中使用標記系統並寫希伯來語,它的工作正常。它只發生在我嘗試使用標記和希伯來文章的時候。我需要在PHP的解決方案或修復bug的方法.. – Almog

+0

@Almog看到我的編輯 – enigma

+0

ty,它的工作原理!現在我有更多的一個問題,當我在希伯來語中進行普通發佈時,它會使mysql中的字符變成亂碼,而當我使用標記系統進行修復時,它會使得HTML中的字符變成unicode或類似的東西。它沒問題,但它佔用了桌面空間,並且之前它是亂碼,所以有辦法做到這一點?並再次感謝我試圖修復一週前 – Almog