注册 登录
编程论坛 Perl论坛

【新人求助】perl中文乱码问题

jiaming 发布于 2020-11-12 22:56, 3308 次点击
如题:perl输出语句 print "" 中文没问题,但是嵌入的pgsql数据库的sql语句执行后中文乱码怎么解决?
7 回复
#2
fall_bernana2020-11-13 09:42
以下是引用jiaming在2020-11-12 22:56:59的发言:

如题:perl输出语句 print "" 中文没问题,但是嵌入的pgsql数据库的sql语句执行后中文乱码怎么解决?


没有代码,不能确定是那里的编码问题,只能猜测是你的pgsql的sql语句没有指定对字符集,比如mysql里的写入的是utf8,那么需要set names utf8 ,输出的才不会是乱码
#3
jiaming2020-11-13 10:58
回复 2楼 fall_bernana
只有本站会员才能查看附件,请 登录
就是这种情况
#4
fall_bernana2020-11-13 12:06
回复 3楼 jiaming
发个程序看看。你这个都看不出你怎么出现的这个问题,我看你用的是windows的CMD。这个并不影响你的程序运行,只是输出中文信息有问题。


[此贴子已经被作者于2020-11-13 12:12编辑过]

#5
jiaming2020-11-13 12:29
回复 4楼 fall_bernana


[此贴子已经被作者于2020-11-13 20:06编辑过]

#6
jiaming2020-11-13 12:40
回复 5楼 jiaming
我的数据库编码是UTF8的,文本的编码是UTF8,控制台编码也是UTF8,
#7
fall_bernana2020-11-13 14:05
回复 5楼 jiaming
/* ↓↓↓↓↓↓ sql语句 开始 ↓↓↓↓↓↓ */
set client_encoding to gbk;
    drop table  if exists ${SDB}.${sdbddl_name}${TX_MON_DAY_MMDD} ;
    create table ${SDB}.${sdbddl_name}${TX_MON_DAY_MMDD} as select * from ${SDBDDL}.${sdbddl_name} where 1=2;
    copy ${SDB}.${sdbddl_name}${TX_MON_DAY_MMDD} from  '${FILE_PATH}${source_data_tableName}-${TX_MM_DD}.txt' delimiter as '    ' CSV HEADER;

   /* ↑↑↑↑↑↑ sql语句 结束 ↑↑↑↑↑↑ */

\\q

这个错误是  wide character in print ,不影响程序运行。你可以百度下这个错误
#8
jiaming2020-11-13 14:57
回复 7楼 fall_bernana
第一行的sql语句忘删除了,没有那条
1