perl mysql utf8_mysql – Perl字符串操作和utf8 / unicode

在Perl CGI脚本中,遇到一个问题,当用户从维基百科复制包含UTF-8字符的文本(如“Baden-Württemberg”)到Web表单输入时,字符编码出现错误。设置了数据库连接的UTF-8支持,并尝试使用Encode模块进行解码和编码,但仍然无法正确处理特殊字符。在输出时,字符“ü”被错误地显示。问题在于Perl脚本在处理UTF-8字符串时的编码转换步骤。
摘要由CSDN通过智能技术生成

我有我认为将成为一个简单的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去了哪里?我怎样才能找回来?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值