为什么Perl DBI转义从MySQL检索的值?

前端之家收集整理的这篇文章主要介绍了为什么Perl DBI转义从MySQL检索的值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 MySQL中有一个包含撇号(‘)和省略号(…)的值:

$/bin/echo "select alias from url_alias where source = 'node/12024'" | \
  MysqL --skip-column-names -D cat36ia_d7prod

输出

forum/technical-discussion/nagging-questions-i’ve-been-too-embarrassed-ask…

当我使用Perl DBI和DBD :: MysqL检索值时,该值已更改:

$perl -MDBI -MDBD::MysqL -e
      '$dbh=DBI->connect( "DBI:MysqL:database=my_db",nick );
       $v=$dbh->selectrow_array(qq|select alias from url_alias where source = "'node/12024'"|);
       print "$v\n";'

输出

forum/technical-discussion/nagging-questions-i?ve-been-too-embarrassed-ask?

为什么Perl这样做?我可以覆盖它吗?

解决方法

>告诉Perl如何编码输出.

use open ':std',':encoding(UTF-8)';

>使用以数据的形式从数据库获取数据

DBI->connect("DBI:MysqL:database=my_db",$user,$pass,{
   MysqL_enable_utf8 => 1,})

猜你在找的Perl相关文章