sqlplus操作--文件的输入与输出

再sqlplus中执行脚本sql语句,并使结果输出到ouput文件
--关闭console台输出,可以节省时间
set term off;
--再输出的文件中显示执行的sql语句
set echo on;
--显示执行每条语句所用的时间
set timing on;
--每行显示的100个字符
set linesize 100;
--查询结果每一百条分一页
set pagesize 100;
--spool 设置输出文件
spool d:\tempfile\oracle\output.txt;
--执行input.txt里面的sql语句
@ d:\tempfile\oracle\input.txt;
--把内容从缓存里面输出到文件吧
spool off;

执行此操作遇到问题
在output.txt中出现乱码
    1.当把output.txt文件设置为gbk字符编码时,发现input.txt里面的中文乱码
    2.当把output.txt文件设置为utf-8字符编码时,describe emp;输出语句里面的中文乱码
最后把input.txt(原本是utf-8)文件字符编码设置为gbk;



这里主要出现的问题是sqlplus客户端字符编码是gbk,输出的内容为gbk编码,如果把output.txt设置为utf-8则sqlplus客户端穿过来的内容乱码;
因为服务端和客户端都是gbk编码,所以input.txt的所有内容并不会出现字符集转换,所以这里选择把input.txt字符集换成和sqlplus客户端字符集相同,并把output.txt设置为与sqlplus客户端相同,就解决了乱码。



原因可见oracle字符编码的解决


一、查询服务端字符集
    select userenv('language') from dual; 

    USERENV('LANGUAGE')
    ----------------------------------------------------
    SIMPLIFIED CHINESE_CHINA.ZHS16GBK


二、 客户端NLS_LANG参数(即sqlplus的参数)该参数用于向Oracle指示客户端操作系统(sqlplus客户端)的字符集。
    select * from v$nls_parameters where parameter='NLS_CHARACTERSET';  

    PARAMETER                      VALUE
    ------------------------------ ------------------------------
    NLS_CHARACTERSET               ZHS16GBK


    设置客户端NLS_LANG 
    C:\Users\85243>set nls_lang=Simplified Chinese_China.ZHS16GBK
    C:\Users\85243>set nls_lang=Simplified Chinese_China.AL32UTF8

三、客户端操作系统字符集
    C:\Users\85243>chcp
    活动代码页: 936
    936代表的是gbk编码 65001代表的是utf-8

 

转载于:https://www.cnblogs.com/ylw666/p/6852720.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值