• 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:	empfileoracleoutput.txt;
    --执行input.txt里面的sql语句
    @ d:	empfileoracleinput.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:Users85243>set nls_lang=Simplified Chinese_China.ZHS16GBK
        C:Users85243>set nls_lang=Simplified Chinese_China.AL32UTF8
    
    三、客户端操作系统字符集
        C:Users85243>chcp
        活动代码页: 936
        936代表的是gbk编码 65001代表的是utf-8
  • 相关阅读:
    详解java定时任务
    Java之Exception
    Java设计模式
    Java中的static关键字解析
    浅析Java中的final关键字
    深入理解Java的接口和抽象类
    一个故事讲清楚NIO
    Java并发编程:线程池的使用
    Java垃圾回收机制
    ubuntu sublime text 2 破解版
  • 原文地址:https://www.cnblogs.com/ylw666/p/6852720.html
Copyright © 2020-2023  润新知