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