perl 乱码问题

perl 乱码问题

同样的代码,locale均为UTF-8。

在A机器要上执行输出日志和写入DB都不乱码。
在B机器要上执行输出日志和写入DB都乱码。

请问还有那些因素会造成这个问题的?

[root@mysql02 perl]# locale

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
[root@mysql02 perl]
不知道是机器那里的原因,A机器不晓得是读了那里的值,不用加set names UTF8.

在B机器执行的话要在SQL前加上set names UTF8 就可以了.
显示环境变量要用 env


QUOTE:
原帖由 醒目 于 2009-1-9 09:34 发表
不知道是机器那里的原因,A机器不晓得是读了那里的值,不用加set names UTF8.

在B机器执行的话要在SQL前加上set names UTF8 就可以了.

names是环境变量吗?


QUOTE:
原帖由 ynchnluiti 于 2009-1-9 09:54 发表

names是环境变量吗?

是SQL的。
LANG=en_US.UTF-8 这是B机器的吗?(用的是utf8编码)

A机器呢?


QUOTE:
原帖由 ynchnluiti 于 2009-1-9 11:17 发表
LANG=en_US.UTF-8 这是B机器的吗?(用的是utf8编码)

A机器呢?

一样的。均是和一楼一样。

已经解决了,就是在perl DBI里加上set names UTF8。

不过不明白为啥A机器不用加。