【发布时间】:2013-01-02 18:15:15
【问题描述】:
在基于 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 字符串。
【问题讨论】:
-
这是在什么环境下?我在带有节点 v0.8.16 的 Linux Mint 13 中得到
> qs.parse('foo=bar&xyz=T%FCt%20T%FCt') { foo: 'bar', xyz: 'T�t T�t' } -
Linux,使用 LC_CTYPE=UTF8 从终端运行,但我不认为这会影响行为:o
标签: node.js character-encoding express query-string