免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: smonkey0
打印 上一主题 下一主题

[Web] apache+perl提取oracle中文数据乱码 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-06-06 15:08 |只看该作者
原帖由 hmglly 于 2008-6-6 10:54 发表
打开oracle的日志活动,用perl访问oracle看看日志中oracle接受的sql语句和用http访问oracle中的sql语句有什么不同

现在通过以下方法测式,知道问题发生在哪了,但是仍不知道如何解决。
将环境变量
NLS_LANG   =>  'AMERICAN_AMERICA.ZHS16GBK';
NLS_DATE_FORMAT   =>   'YYYY-MM-DD';

分别以下面三种方法添加,并在DOS下和WEB下分别运行   select * from nls_session_parameters;
1. 添加环境变量
2. 添加注册表相应的项
3. 在程序中设定临时环境变量:(perl)
$ENV{NLS_LANG}='AMERICAN_AMERICA.ZHS16GBK';
$ENV{NLS_DATE_FORMAT}   =   'YYYY-MM-DD';
a.DOS下显示:
NLS_LANGUAGE = AMERICAN
NLS_TERRITORY = AMERICA
NLS_CURRENCY = $
NLS_ISO_CURRENCY = AMERICA
NLS_NUMERIC_CHARACTERS = .,
NLS_CALENDAR = GREGORIAN
NLS_DATE_FORMAT = YYYY-MM-DD
NLS_DATE_LANGUAGE = AMERICAN
NLS_SORT = BINARY
NLS_TIME_FORMAT = HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT = DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT = HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT = DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY = $
NLS_COMP = BINARY
NLS_LENGTH_SEMANTICS = BYTE
NLS_NCHAR_CONV_EXCP = FALSE
b.WEB下显示:
NLS_LANGUAGE = AMERICAN
NLS_TERRITORY = AMERICA
NLS_CURRENCY = $
NLS_ISO_CURRENCY = AMERICA
NLS_NUMERIC_CHARACTERS = .,
NLS_CALENDAR = GREGORIAN
NLS_DATE_FORMAT = DD-MON-RR
NLS_DATE_LANGUAGE = AMERICAN
NLS_SORT = BINARY
NLS_TIME_FORMAT = HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT = DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT = HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT = DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY = $
NLS_COMP = BINARY
NLS_LENGTH_SEMANTICS = BYTE
NLS_NCHAR_CONV_EXCP = FALSE


发现一个问题了吧? 就是在WEB中的环境变量压根儿就没传过去。后来又试了下将http.conf里添加
SetEnv NLS_LANG AMERICAN_AMERICA.ZHS16GBK
SetEnv NLS_DATE_FORMAT YYYY-MM-DD

结果依然没变。。。。怎么个回事儿吗。。。。。。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-09-29 06:20:00
12 [报告]
发表于 2008-06-06 15:12 |只看该作者
你的apache的环境变量有了,你的程序的环境变量呢?是用的apache的吗?

论坛徽章:
0
13 [报告]
发表于 2008-06-06 16:08 |只看该作者

回复 #12 hmglly 的帖子

嗯。。上面任何一种方法,在程序里加上 print $ENV{NLS_DATE_FORMAT};
都能打印出相应的环境变量,所以说程序的环境变量就成功导入了。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-09-29 06:20:00
14 [报告]
发表于 2008-06-06 17:47 |只看该作者
从屏幕打印出环境变量和输送到数据库是两个过程,能在屏幕上打印出来,不代表输送到数据库的环境变量也是这样的
打开apache的debug,看看输送的是什么东西

论坛徽章:
0
15 [报告]
发表于 2008-06-08 15:36 |只看该作者

回复 #1 smonkey0 的帖子

把perl文件保存为GB2312字符编码格式试试~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP