我有我认为将成为一个简单的Web表单,直到人们开始将包含utf8字符的维基百科中的文本字符串复制并粘贴到输入字段中.我的perl CGI脚本打开
MySQL数据库连接并设置
$DBH->{mysql_enable_utf8} = 1;
$DBH->do("set names 'utf8';");
我正在尝试使用Encode模块对目标输入值进行解码,使用和编码,但这并不像我预期的那样工作.网页设置为utf8字符集.
在这种情况下,我的目标字符串是Baden-Württemberg[从列出德国城镇名称的维基百科页面复制].发送请求时,我可以看到目标字符串为:Baden-Württemberg.虽然这不是很好地通过我的CGI脚本.
我有以下示例脚本:
#!/usr/local/bin/perl -w
use strict;
select(STDOUT);
$|++;
use feature 'unicode_strings';
use Encode;
use utf8;
binmode STDOUT, ":utf8";
my $thing = "Baden-Württemberg";
print STDOUT "$thing\n";
my $decodedThing = decode_utf8($thing);
print STDOUT encode_utf8($decodedThing) . "\n";
在’-W’之后,$thing的值有一个’u’和一个变音符号.
当我运行脚本时,我得到:
# ./test.pl
Malformed UTF-8 character (unexpected non-continuation byte 0x72, immediately after start byte 0xfc) at ./test.pl line 13.
Baden-Wrttemberg
Baden-Wrttemberg
u-umlaut去了哪里?我怎样才能找回来?