hoo*_*k38 3 mysql perl android utf-8 iso-8859-1
我对此很陌生,对大多数人来说这可能很容易,但我已经为此困难了好几天.
我正在使用perl编写一个Web爬虫,并且Web爬虫将使用LWP和一些简单的正则表达式提取某些信息.
这些信息保存在mySQL数据库中,该数据库将在Android设备上使用.但是,当我测试网络爬虫时,我意识到一些信息是使用HTML数字编码(典華)的中文(典华),有些信息使用iso-8859-1编码(Zhífú).我使用PERL HTML :: Entities库解决了中文部分,当我将控制台设置为utf8时可以显示该库.但是,其他字母(Zhífú)只能在iso-8859-1中显示.如果我尝试在utf8中显示它,它将成为Zh f .我的问题是:
非常感谢你.
(Zhífú)只能在iso-8859-1中显示.如果我尝试在utf8中显示它,它将成为Zh f .
那是完全错误的.您可以在iso-8859-1和UTF-8终端/应用程序/中显示"Zhífú".事实上,你看到"Zhífú"的事实证明它可以用UTF-8显示,因为这是一个UTF-8网页.如果你得到"Zh f ",那是因为在将它提供给终端/应用程序/任何想要UTF-8之前,你没有使用UTF-8对字符串进行编码.
无论如何,关于这个问题.我假设你要存储文本,而不是HTML.
解码每个输入!编码每个输出!那没问题.
From the web
5a 68 c3 ad 66 c3 ba
|
decode Done for you by ->decoded_content (LWP::UA)
| or by ->content (WWW::Mech)
v
Decoded text Manipulate as desired
Zhífú
|
encode Done for you by DBI
|
v
Database
5a 68 c3 83 c2 ad 66 c3 83 c2 ba
Run Code Online (Sandbox Code Playgroud)
事实上,解码应该已经为你完成->decoded_content,并且DBI已经为你完成了编码,所以我不明白你为什么遇到这个问题.
当你从数据库中读取并输出到屏幕/什么时,同样的事情.
5a 68 c3 83 c2 ad 66 c3 83 c2 ba
Database
|
decode Done for you by DBI if you use
| the ..._utf8 flag for your driver
v
Decoded text Manipulate as desired
Zhífú
|
encode use open ':std', ':locale';
|
v
Screen
5a 68 c3 83 c2 ad 66 c3 83 c2 ba
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |