gpt4 book ai didi

firefox - 您认为 Google 如何处理此编码问题?

转载 作者:行者123 更新时间:2023-12-02 02:35:57 24 4
gpt4 key购买 nike

我最近遇到了一个编码问题,该问题与 Firefox 如何对直接输入地址栏的 URL 进行编码有关。基本上看起来 Firefox 的默认 URL 字符编码不是 UTF-8,大多数浏览器都是这种情况。此外,看起来他们正在尝试根据 URL 的内容做出一些关于使用哪种字符编码的明智决定。

例如,如果您直接在地址栏中输入带有“q”参数的 URL(我使用的是 Firefox 3.5.5),您将得到以下结果:

对于给定的查询字符串参数,这是它在 http 请求中的实际编码方式:
1) ...q=Književni --> q=Knji%9Eevni(这似乎是 iso-8859-1 编码的)
2) ...q=汉字 --> q=%E6%BC%A2%E5%AD%97 (这似乎是UTF-8编码的)
3) ...q=Književni汉字 --> Knji%C5%BEevni%E6%BC%A2%E5%AD%97 (这似乎是 UTF-8 编码的...这很奇怪,因为请注意第一个部分值与 1 相同,是 iso-8859-1 编码的)。

所以,这应该没什么大不了的,对吧?好吧,对我来说,不完全是,但有点。在我正在处理的应用程序中,我们在全局导航中有一个搜索框。当用户在我们的搜索框中提交搜索词时,“q”参数(如在我们的示例中,保存查询字符串值的参数)在请求中提交并且是 UTF-8 编码的,一切都很好。

但是,随后出现在地址栏中的 URL 包含该 URL 的解码形式,因此 q 参数看起来像“q=Književni”。现在,正如我之前提到的,如果用户随后按 ENTER 键提交地址栏中的内容,“q=Književni”参数现在被编码为 iso-8859-1 并作为“q= Knji%9Eevni”。这样做的问题是我们总是期待一个 UTF-8 编码的 URL ......所以当我们收到这个参数时我们的应用程序不知道如何解释它并且它可能会导致一些奇怪的结果。

正如我之前提到的,这似乎只是 Firefox 的问题,用户很少会真正遇到这种情况,因此我们并不太担心。然而,我碰巧注意到谷歌实际上处理得很好。使用查询字符串参数的任何一种不同编码形式键入以下 URL 将在 Google 中返回不错的结果:

http://www.google.com/search?q=Knji%C5%BEevni
http://www.google.com/search?q=Knji%9Eevni

所以我的问题是,您认为他们如何处理这种情况?此外,还有其他人看到同样奇怪的 Firefox 行为吗?

最佳答案

看起来它使用的是 latin-1,除非任何字符都不能用该编码表示,否则它使用的是 UTF-8。

如果情况确实如此,则在另一端解决此问题的方法是假设您收到的所有内容都是 UTF-8,并将其验证为 UTF-8。如果它作为 UTF-8 验证失败,则假定它是 latin-1 (iso-8859-1)。

由于 UTF-8 的结构方式,当验证为 UTF-8 时,实际上不是 UTF-8 的东西不太可能通过。

仍然存在这种可能性,我认为 Firefox 的行为不是一个好主意,尽管毫无疑问他们这样做是作为一种妥协——比如为了与服务器兼容,如果他们介入它就不会知道 UTF-8 .

关于firefox - 您认为 Google 如何处理此编码问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1764832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com