HTML 表单获取数据是 UTF8 但 post 数据不是?

HTML Form get data is UTF8 but post data is not?

我遇到一些必须处理特殊德语字母的 perl CGI 脚本的问题。

我的问题是,例如,如果我的表单使用 GET,我输入到文本字段中的 ö 字符将被正确读取,但如果我使用 POST,它将变成 ö .我需要它与 POST 一起使用,所以切换到 GET 是不可能的。

网络服务器使用 utf8,我的脚本保存为 utf8,我明确告诉 perl 使用 "use CGI -utf8;" 将所有 CGI 输入视为 utf8,并且我的数据库将客户端编码设置为 utf8。

我可能遗漏了什么?

我刚刚用 CGI 发行版中包含的 example 对此进行了测试,它使用简单的形式来 POST 文本字段中的数据。该示例在其当前状态下使用 utf8 数据。如果 use CGI-utf8 标志被 包含 ,ö 字符将被破坏。所以这很可能是一个错误。

编辑:深入挖掘,这是因为未在变量上设置 utf-8 位 - CGI tries 到 DTRT,但如果未设置 utf-8 位,则它 解码。我会尽快调查这个问题,但没有承诺...