Cha*_*der 4 mysql perl escaping dbi dbd
我在MySQL中有一个包含撇号(’
)和省略号(...
)的值:
$ /bin/echo "select alias from url_alias where source = 'node/12024'" | \
mysql --skip-column-names -D cat36ia_d7prod
Run Code Online (Sandbox Code Playgroud)
输出:
forum/technical-discussion/nagging-questions-i’ve-been-too-embarrassed-ask…
Run Code Online (Sandbox Code Playgroud)
当我检索用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";'
Run Code Online (Sandbox Code Playgroud)
输出:
forum/technical-discussion/nagging-questions-i?ve-been-too-embarrassed-ask?
Run Code Online (Sandbox Code Playgroud)
为什么Perl这样做?我可以覆盖它吗?
告诉Perl如何编码输出.
use open ':std', ':encoding(UTF-8)';
Run Code Online (Sandbox Code Playgroud)使用,以文本形式从数据库中获取数据
DBI->connect("DBI:mysql:database=my_db", $user, $pass, {
mysql_enable_utf8 => 1,
})
Run Code Online (Sandbox Code Playgroud)