gpt4 book ai didi

node.js - 如何处理包含非utf8字符的GET参数?

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:31 25 4
gpt4 key购买 nike

在基于nodejs/express的应用程序中,我需要处理可能包含使用iso-8859-1字符集编码的变音符号的GET请求。

不幸的是,它的查询字符串解析器似乎只处理纯 ASCII 和 UTF8:

> qs.parse('foo=bar&xyz=foo%20bar')
{ foo: 'bar', xyz: 'foo bar' } # works fine
> qs.parse('foo=bar&xyz=T%FCt%20T%FCt')
{ foo: 'bar', xyz: 'T%FCt%20T%FCt' } # iso-8859-1 breaks, should be "Tüt Tüt"
> qs.parse('foo=bar&xyz=m%C3%B6p')
{ foo: 'bar', xyz: 'möp' } # utf8 works fine

是否有隐藏选项或其他干净的方法可以使其与其他字符集一起使用?默认行为的主要问题是我无法知道是否存在解码错误 - 毕竟,输入可能只是简单地解码为仍然看起来像的东西urlencoded 字符串。

最佳答案

好吧URL encoding应始终为 UTF-8,其他情况可视为编码攻击并拒绝请求。不存在这样的作为非 utf8 字符。我不知道为什么您的应用程序可以获取任何编码的查询字符串,但如果您只使用字符集,那么浏览器就可以了页面上的标题。对于 API 请求或其他请求,您可以指定 UTF-8 并将无效的 UTF-8 作为错误请求拒绝。

如果您确实指的是 ISO-8859-1,那么它非常简单,因为字节与 unicode 代码点完全匹配。

'T%FCt%20T%FCt'.replace( /%([a-f0-9]{2})/gi, function( f, m1 ) {
return String.fromCharCode(parseInt(m1, 16));
});

虽然网络上可能从来都不是 ISO-8859-1,但实际上是 Windows-1252。

关于node.js - 如何处理包含非utf8字符的GET参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14111902/

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