博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决perl+mysql+mongodb中文乱码问题
阅读量:6713 次
发布时间:2019-06-25

本文共 1903 字,大约阅读时间需要 6 分钟。

  hot3.png

最近,使用perl导数据到mongodb过程中,发现存入到mongodb的中文数据乱码. 为什么要使用perl导入数据到mongodb中? 公司cms使用的mysql数据库太多多表连接并且性能越来越低,于是决定将mysql的数据冗余一份到mongodb中,以降低cms数据库的阳历. 那用什么方式导入数据到mongodb中呢?使用shell操作mongodb不方便、使用php感觉效率不是很高、最后选择了perl. 在使用perl导数据的过程中出现中文乱码, 这边简单还原一下mongodb出现中文乱码的现场.
mongodb中文乱码代码如下:
# cat /root/ttlsa_com.pl #!/usr/bin/perl use DBI; use MongoDB; use Encode;my $dbh = DBI->connect("DBI:mysql:database=cms;host=192.168.50.213","root","test11", {'RaiseError' => 1}) or die "error"; $dbh->do("set names gbk");//这部一定要做,否则从mysql取出来的数据就是乱码, my $sth = $dbh->prepare("select title  from cms limit 10 ) or die $dbh->errstr;$sth->execute() or die $sth->errstr;while(my @data = $sth->fetchrow_array()) { my $title = $data[0]; $collection->insert({ title => $title}); }
发现mongodb出现乱码 perl运行结果,mongodb里面的中文是乱码,截图如下: [caption id="attachment_2384" align="aligncenter" width="729"] perl + mongodb中文乱码[/caption] mysql里面取出来的数据时gbk,存储到mongodb没有decode一次。修改为如下代码之后问题得到解决
mongodb无中文乱码代码如下:
# cat /root/ttlsa_com.pl #!/usr/bin/perl use DBI; use MongoDB; use Encode;my $dbh = DBI->connect("DBI:mysql:database=cms;host=192.168.50.213","root","test11", {'RaiseError' => 1}) or die "error"; $dbh->do("set names gbk");my $sth = $dbh->prepare("select title  from cms limit 10 ) or die $dbh->errstr; $sth->execute() or die $sth->errstr;while(my @data = $sth->fetchrow_array()) { my $title = decode("gbk",$data[0]); $collection->insert({ title => $title}); }
  perl运行结果如下图,以下mongodb中文不是乱码: [caption id="attachment_2385" align="aligncenter" width="612"] perl + mongodb乱码解决[/caption]  
encode与decode用法
use Encode;gbk转uft-8:$data = encode("utf-8",decode("gbk",$data)); 或者$data = encode_utf8(decode("gbk",$data));utf-8转gbk:$data = encode("gbk", decode("utf8", $data));uft-8转gb2312:$data = encode("gb2312", decode("utf8", $data));
总结,尤其注意要插入到mongodb的数据的编码,不要再次出现这种情况. 转载请注明出处:http://www.ttlsa.com/html/2380.html

转载于:https://my.oschina.net/766/blog/210847

你可能感兴趣的文章
我的友情链接
查看>>
log4j与commons-logging,slf4j的关系
查看>>
Mysql、MSSQL选择和比较
查看>>
一种新型的高一致性MySQL集群架构:Galera Cluster
查看>>
show processlist命令以及sysbench测试工具的使用
查看>>
java虚拟机环境变量的配置
查看>>
Python 标准库中的装饰器
查看>>
织梦调用当前栏目名称,链接
查看>>
linux 磁盘管理
查看>>
Windows Server 2008 还原活动目录
查看>>
【翻译】Sencha Cmd中脚本压缩方法之比较
查看>>
各硬盘编号含义
查看>>
js保留两位小数,并去除最末位为0的字符
查看>>
如何快速应对,使ERP系统满足企业变化的需求?
查看>>
为什么说传统的技术架构已经不能满足未来云客服的需求
查看>>
汇桔宝时代:重新定义互联网营销与流量格局!
查看>>
Linux环境下Shell脚本基础篇-鸡兔同笼问题
查看>>
来自一个十年 Java开发者百度、阿里、腾讯的面试心经
查看>>
什么平台拥有高优质的网络推广网站?
查看>>
影响中小企业使用云桌面的障碍是什么
查看>>