【发布时间】:2020-04-22 08:55:10
【问题描述】:
我正在运行为 MSWin32-x64-multi-thread 构建的 perl 5,版本 24,subversion 3 (v5.24.3) (带有 1 个已注册补丁,详情请参阅 perl -V)(活动状态)。
尝试解析以 UTF-8 编码的 HTML 页面:
$request = new HTTP::Request('GET', $url);
$response = $ua->request($request);
$content = $response->content();
我使用 INDEX 和 SUBSTR 函数将 $content 解析为一个巨大的字符串,效果很好。 HTML 页面包含值为 ÖBB 的字符串,我需要将其插入数据库中,与 ÖBB 完全相同 当我打印它并插入数据库时,我得到了一些 ascii 字符,而不是 Ö。
注意:这个问题与数据库无关; MySQL 可以很好地处理 utf-8,所以如果我插入值“ÖBB”,它不会有问题。
我在这里和其他论坛上查看了大量类似的问题/答案,但我并不明智。
使用 utf-8 和 binmode(STDOUT, ":utf8") 对我不起作用... 非常感谢可以解决问题的代码 sn-p,谢谢。
【问题讨论】:
-
如何将 HTML 页面(字符串)放入程序中?
-
你使用什么数据库?什么司机?你如何连接到数据库?
-
考虑使用utf8::all,它试图使 Perl 尽可能地对 UTF8 友好。
-
当您说“打印”时,您的意思是打印到控制台吗?在这种情况下,请确保您的 Unicode 代码页处于活动状态。在命令行中键入
chcp。如果它说“65001”,那么你在这方面很好。如果没有,请输入chcp 65001以激活正确的代码页。 -
您的数据库是否配置为支持 UTF8?您没有说明您使用的数据库。如果您使用 MYSQL DB,请参阅以下instruction。如果您在 MS Windows 中不要忘记在终端窗口
chcp 65001中更改代码页。