jasonw68 发表于 2013-1-16 18:05:10

Oracle 输出乱码

先介绍一下shell所在的环境:
操作系统 Linux Suse 9 数据库 Oracle 9i
Suse的环境变量:
NLS_LANG=SIMPLIFIED CHINESE_CHINA.UTF8 (控制Oracle客户端应用程序使用的字符集)
LANG=zh_CN.gbk(操作系统的语言字符集)
Oracle服务器的字符集:UTF8(Oracle服务器端的字符集)

shell的执行方式:先用ftp工具将脚本以asc方式上传至Suse上,然后利用telnet工具登录Suse来运行shell。下面一段为原始shell,即执行结果出现乱码问题的代码。功能是通过调用存储过程,获得返回出参,并将出参值写到目标文件DelProductInfoResult.txt中:
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;">http://ajava.org/uploads/allimg/090709/1200195463-0.gifsend_day=`sqlplus -s $db_conn_cmd <<EOF
http://ajava.org/uploads/allimg/090709/1200195463-0.gifset serveroutput on
http://ajava.org/uploads/allimg/090709/1200195463-0.gifset pagesize 0
http://ajava.org/uploads/allimg/090709/1200195463-0.gifset linesize 32767
http://ajava.org/uploads/allimg/090709/1200195463-0.gifset feedback off
http://ajava.org/uploads/allimg/090709/1200195463-0.gifDECLARE
http://ajava.org/uploads/allimg/090709/1200195463-0.gifret1 varchar2(1000);
http://ajava.org/uploads/allimg/090709/1200195463-0.gifBEGIN
http://ajava.org/uploads/allimg/090709/1200195463-0.gif zxdbm_ismp.product_delete('${v_productid}',ret1);
http://ajava.org/uploads/allimg/090709/1200195463-0.gif DBMS_OUTPUT.PUT_LINE(ret1);
http://ajava.org/uploads/allimg/090709/1200195463-0.gifEND;
http://ajava.org/uploads/allimg/090709/1200195463-0.gif/
http://ajava.org/uploads/allimg/090709/1200195463-0.gifexit;
http://ajava.org/uploads/allimg/090709/1200195463-0.gifEOF`
页: [1]
查看完整版本: Oracle 输出乱码