编程语言
首页 > 编程语言> > android – 如何使用perl存储和显示ISO-8859-1和UTF8字符

android – 如何使用perl存储和显示ISO-8859-1和UTF8字符

作者:互联网

我对此很陌生,对大多数人来说这可能很容易,但我已经为此困难了好几天.

我正在使用perl编写一个Web爬虫,并且Web爬虫将使用LWP和一些简单的正则表达式提取某些信息.

这些信息保存在mySQL数据库中,该数据库将在Android设备上使用.
然而,当我测试网络爬虫时,我意识到一些信息是使用HTML数字编码(典華)的中文(典华),有些信息是使用iso-8859-1编码(Zhífú) ).
我使用PERL HTML :: Entities库解决了中文部分,当我将控制台设置为utf8时可以显示该库.但是,其他字母(Zhífú)只能在iso-8859-1中显示.如果我尝试在utf8中显示它,它将成为Zh f .我的问题是:

>我如何确定它使用哪种编码,以及如何以不同方式显示它?
>我能直接将它存储在mySQL中,或者我应该先处理信息(如果我错了,请纠正我,但我的理解是mySQL使用utf8作为默认语言).
>当我在Android设备上显示时,这会导致某种问题吗?

非常感谢你.

解决方法:

(Zhífú) can only be displayed in iso-8859-1. If I try to display it in utf8, it will become 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

事实上,解码应该已经通过 – > decoding_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

标签:iso-8859-1,android,mysql,perl,utf-8
来源: https://codeday.me/bug/20190826/1733668.html