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

那么,这是解决字符编码潜在问题的更好方法,还是仅仅是开发者乐在其中呢?

评论

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

给出这些URL的示例,或者没有发生。

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

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

#1 楼

默认情况下,如果可能,较旧版本的IE(<= 8)将以Latin-1编码提交表单数据。通过包含无法用Latin-1表示的字符,IE被迫对其表单提交使用UTF-8编码,从而简化了各种后端过程,例如数据库持久性。参数是utf8=true,那么这将不会在这些浏览器中触发UTF-8编码。

评论


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

–加里·罗(Gary Rowe)
2012年10月13日在13:48

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

–加雷斯
2012年10月14日上午10:08

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

–杰克五世。
2012年10月17日上午10:06

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

–cabbey
2012年10月18日19:54

@Gareth:您能支持IE <= 8表单不支持文档和/或表单编码的说法吗?

– hakre
2012年10月22日13:00