我很高兴重建一个基于 perl 的 Web 框架以支持 UTF8。我采取了以下步骤
对于主脚本:
使用开放式 IO => ":utf8",":std";
使用utf8;
对于 DBI 适配器:
$self->{dbh}->{'mysql_enable_utf8'} = 1;'
在我的 POST 和 GET 请求解析器中,基于 CGI:
foreach (@val) { $_ = decode("UTF-8",$_);
据我所知,这在我使用 Perl 5.10.1 的本地 Ubuntu 上工作得很好,但在运行 5.10 的网络服务器上,解码 POST 或 GET 会弄乱文本。
我必须承认,我对整个 UTF8 的事情感到很困惑。我需要
阅读模板
从 mySQL 获取数据
处理 POST 和 GET
插入 mySQL
编写模板
我在这里忘记了什么吗?什么会导致反复无常的行为?我在主脚本中使用的每个模块是否都需要专门使用 utf8
或者如果主脚本这样做就足够了吗?
感谢任何提示,
托马斯
最佳答案
use utf8;
正如一些人所说,就您的 i/o 问题而言,这是一个空操作:它只是说“将我的源代码视为 utf8 编码”。
MySQL/DBI 方法物超所值。
对于 CGI,更新到最近的 CGI 并设置 $CGI::PARAM_UTF8=1
,它会为您执行 decode()
。 (作为一般提示,顺便说一句,decode_utf8()
要快得多!)
至于另一个问题,您可能需要比较您的 Apache 服务器配置以查看是否 AddDefaultCharset设置为一些无用的值。
另请参阅 my talk at last year's London Perl Workshop更详细地了解 Perl 和 Unicode。
关于mysql - Perl UTF8 CGI 和 DBI ... 正确的工作流程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4680722/