Chrome時,將這個:aöüß
到%C3%A4%C3%B6%C3%BC%C3%9F
但Firefox將其轉換爲這個奇怪的東西在這裏:a%F6%FC%DF
我似乎無法找到一種方法來Firefox的東西轉換回原來的PHP 。 不幸的是Urldecode和rawurldecode不起作用。有誰知道如何處理?謝謝。差異火狐 - 鉻編碼變音
回答
由於Tei已經猜到:Chrome瀏覽器使用UTF-8(可能推薦)用於URL參數,而Firefox使用Latin-1。我不認爲你可以控制這種行爲。此外,這將很難處理,因爲你幾乎需要猜測使用的編碼。
這是怎樣的解碼工作(依賴於瀏覽器,假設你使用UTF-8的應用程序):
鉻:
$text = urldecode($_GET['text']);
火狐:
$text = utf8_encode(urldecode($_GET['text']));
這可能是一個適用於大多數情況的解決方案:
function urldecode_utf8($text) {
$decoded = urldecode($text);
if (!mb_check_encoding($decoded, 'UTF-8')) {
$decoded = utf8_encode($decoded);
}
return $decoded;
}
強制您的頁面使用UTF-8。這些代碼可能是不同的編碼變音符號。一個是Latin1,另一個可能是UTF-8。
強制utf-8的最佳方式是在html中的元標記中。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
我已經試圖通過發送一個標題與PHP和使用HTML元標記強制UTF-8,沒有任何工作。它不是一個btw形式,只是一個正常的get參數?text =aöüß – Stefan 2012-04-02 11:11:47
?text =aöüß不是urlencoded。要在javascript中進行編碼,您需要encodeURIcomponent以保留編碼。要用PHP編碼,你可以使用rawurlencode。我不知道你是否需要或不需要rawurldecode如果你rawurldecode一個項目.. – Tei 2012-04-02 11:22:56
追加?text =aöüß到Firefox中的頁面,你會發現它會自動編碼它爲%F6%FC%DF – Stefan 2012-04-02 11:26:41
- 1. 鉻/火狐中的HTML編碼
- 2. 火狐VS鉻的時間差與momentJS
- 3. 鉻/ Safari瀏覽器和火狐之間的CSS定位差異
- 4. userscript鉻與火狐
- 5. 原型IE,火狐,Chrome差異
- 6. 如何修復鉻和火狐之間的字體大小差異
- 7. 火狐不播放聲音
- 8. 口音,網址和火狐
- 9. 火狐火災,不改變
- 10. 網站未加載鉻和火狐
- 11. css3旋轉鉻和火狐上的3D
- 12. 強制瀏覽器打印鉻,火狐
- 13. jQuery的.css應用在鉻或火狐
- 14. 排序在javascript火狐對象VS鉻
- 15. Animate.css在滾動bug鉻/火狐
- 16. Javascript工作在鉻但不是火狐
- 17. RequireJS錯誤,但不是鍍鉻/火狐
- 18. jqgrid顯示在鉻vs火狐
- 19. 絕對位置 - 鉻和火狐
- 20. 使用鉻網絡面板像火狐
- 21. 按鍵不工作在鉻或火狐
- 22. 背景圖像顏色變化火狐/鉻
- 23. 注漿url編碼字符串轉換成網頁 - 火狐VS鉻
- 24. jquery代碼工作在鉻,但不是火狐或safari
- 25. 火狐瀏覽器的風格與導航欄的差異
- 26. 懸停火狐
- 27. CSS表格顯示差異 - Chrome對比火狐
- 28. 歌劇和火狐之間的字體大小差異
- 29. BouncyCastle編碼差異
- 30. JavaScript編碼差異
謝謝,那有效。但是,這些不同的瀏覽器行爲只是吸 - - – Stefan 2012-04-02 11:32:57
是的,我真的很驚訝,Firefox仍然堅持拉丁-1在這裏。 – Niko 2012-04-02 11:48:03
太棒了!該功能對我來說完美無缺 – Stefan 2012-04-02 11:51:52