使用“ utf8 =✓”优于“ utf8 = true”吗?


569

我最近看到了一些包含查询参数“ utf8 =✓”的URI。我的第一印象(想到“嗯,看起来很酷”)是可以用来检测损坏的字符编码。

那么,这是解决字符编码潜在问题的一种更好的方法,还是仅仅是一个有趣的开发人员?


7
我不同意。有些方案看起来像URN,并且带有查询参数,例如比特币。URI不仅限于浏览器。请参阅en.wikipedia.org/wiki/URI_scheme。这个问题可以解决浏览器访问协议处理程序时要求字符编码的一般情况。
加里·罗

3
举例说明这些URL或没有发生。
hakre 2012年

10
没有话题,但是还可以。这是我个人捐赠的比特币URI:bitcoin:1KzTSfqjF2iKCduwz59nv2uqh1W2JsTxZH?amount = 0.5&label = Agile%20Stack。请注意,该方案本质上是具有查询参数的URN,但它会移交给协议处理程序。这种URI也可能会受益于“ utf8 =✓”解决方法。
加里·罗

1
@GaryRowe那么,您曾经从该链接获得任何捐款吗?
Kyralessa

Answers:


814

默认情况下,如果可能,较旧版本的IE(<= 8)将以Latin-1编码提交表单数据。通过包含无法用Latin-1表示的字符,IE被迫对其表单提交使用UTF-8编码,从而简化了各种后端过程,例如数据库持久性。

如果使用该参数,utf8=true则不会在这些浏览器中触发UTF-8编码。


8
@LarsViklund我的评论应该更清楚了。我的意思是简化而不是绕过与字符编码相关的验证。
加里·罗

3
@Lars是的,它不会使您不必检查输入。但这确实意味着编码调整仅会成为安全处理的一部分,并且不会污染“标准处理”路径的概念
Gareth 2012年

36
另请参阅stackoverflow.com/questions/3222013/…。显然,Ruby on Rails曾经使用过一个雪人角色,并被更改为一个复选标记,该标记不太模糊但不太有趣。
Jack V.

11
@JohnLBevan接收端会忽略它,它的工作是强制浏览器在utf8中而不是latin1中发送内容。我也将其视为ie =💩(这是“ poo of poo”代码点,看起来好像没有在注释中呈现。)
cabbey 2012年

3
@Gareth:您可以备份IE <= 8表单不支持文档和/或表单编码的说法吗?
hakre 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.