`

sqlplus中文乱码的解决 ---- 2016-06-29

阅读更多

原文链接:http://www.cnblogs.com/afant/archive/2009/01/04/1368334.html

可以把自己的文件通过notepad++设置为utf-8编码,然后在运行sqlplus之前

windows下:cmd命令行下

set NLS_LANG=AMERICAN_AMERICA.UTF8

linux下:

export NLS_LANG=AMERICAN_AMERICA.UTF8

之后就可以直接:

@C:\simon\test.sql

or

@/home/simon/test.sql

 

nls_lang

1. NLS_LANG 参数组成
NLS_LANG参数由以下部分组成:
NLS_LANG=<Language>_<Territory>.<Clients Characterset>
NLS_LANG各部分含义如下:
LANGUAGE指定:
-Oracle消息使用的语言
-日期中月份和日显示
TERRITORY指定
-货币和数字格式
-地区和计算星期及日期的习惯
CHARACTERSET:
-控制客户端应用程序使用的字符集
通常设置或者等于客户端(如Windows)代码页 
或者对于unicode应用设置为UTF8
在Windows上查看当前系统的代码页可以使用chcp命令:
E:\>chcp
活动的代码页: 936
代码页936也就是中文字符集 GBK,在Microsoft的官方站点上,我们可以遭到关于936代码页的具体编码规则,请参考以下链接:
http://www.microsoft.com/globaldev/reference/dbcs/936.htm

2. 查看 NLS_LANG 的方法
Windows使用:
echo %NLS_LANG%
如:
E:\>echo %NLS_LANG%
AMERICAN_AMERICA.ZHS16GBK
Unix使用:
env|grep NLS_LANG
如:
/opt/oracle>env|grep NLS_LANG
NLS_LANG=AMERICAN_CHINA.ZHS16GBK
Windows客户端设置,可以在注册表中更改NLS_LANG,具体键值位于:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\
xx指存在多个ORACLE_HOME时系统编号。

3. 查看数据库当前字符集参数设置
SELECT * FROM v$nls_parameters;

4. 查看数据库可用字符集参数设置
SELECT * FROM v$nls_valid_values;

5. 客户端 NLS_LANG 的设置方法
Windows:
# 常用中文字符集
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
# 常用unicode字符集
set NLS_LANG=american_america.AL32UTF8
可以通过修改注册表键值永久设置
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG
Unix:
# 常用unicode字符集
export NLS_LANG=american_america.AL32UTF8
# 常用中文字符集
export NLS_LANG="Simplified Chinese_china".ZHS16GBK
可以编辑 bash_profile 文件进行永久设置
vi .bash_profile
NLS_LANG="Simplified Chinese_china".ZHS16GBK export NLS_LANG
# 使 bash_profile 设置生效
source .bash_profile
=================================================================================

[Q]怎么样查看数据库字符集  
  [A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。
  
  客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,
  
  表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
  
  会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
  
  客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件
  
  字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
  
  [Q]怎么样修改字符集
  
  [A]8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。
  
  Startup nomount;
  Alter database mount exclusive;
  Alter system enable restricted session;
  Alter system set job_queue_processes=0;
  Alter database open;
  Alter database character set zhs16gbk; 

[Q]怎么样查看数据库字符集  
  [A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。
  
  客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,
  
  表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
  
  会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
  
  客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件
  
  字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
  
  [Q]怎么样修改字符集
  
  [A]8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。
  
  Startup nomount;
  Alter database mount exclusive;
  Alter system enable restricted session;
  Alter system set job_queue_process=0;
  Alter database open;
  Alter database character set zhs16gbk;

 

分享到:
评论

相关推荐

    解决linux环境下sqlplus乱码的方法

    本篇文章将详细介绍如何解决在Linux环境下SQL*Plus出现的乱码问题。 首先,我们需要了解Linux系统的字符编码。Linux默认使用UTF-8作为系统编码,而SQL*Plus则可能根据Oracle数据库的字符集进行显示。如果两者不一致...

    sqlplus日期格式和中文乱码解决文.pdf

    SQLplus 日期格式和中文乱码解决方法 在数据库中查询数据时,我们经常会遇到日期时间格式的问题,例如显示语言、显示格式等。这可能是因为数据库中存储的格式是YYYY-MM-DD HH24:MI:SS,但是查询出来的却是22-1月-10...

    RedHat5.4Oracle11gSqlplus中文乱码解决.doc

    综上所述,解决Red Hat 5.4上Oracle 11g Sqlplus的中文乱码问题需要综合考虑系统级别的中文支持、环境变量配置以及客户端终端的设置。按照上述步骤操作后,应该能有效解决在各种场景下遇到的中文乱码问题。

    PLSQL 中文乱码解决方案

    本文将深入探讨这一问题,并提供一套详细的解决方案,帮助读者理解和解决因字符集不匹配而导致的PL/SQL中文乱码现象。 ### PL/SQL中文乱码原因分析 PL/SQL中文乱码的根本原因在于数据库与应用程序(如PL/SQL ...

    centos7下Oracle12中文乱码的问题

    替换oracle解压之后的database文件中的filegroup2文件 路径 :database/stage/Components/oracle.jdk/1.6.0.75.0/1/DataFiles

    Oracle导出成csv格式后显示乱码的解决方法

    在Oracle数据库环境中,导出数据为CSV(Comma Separated Values)格式时,有时可能会遇到中文显示为乱码的问题。这通常与字符编码不匹配有关。以下是一套详细的解决步骤和相关知识点: 1. **字符编码问题**: CSV...

    Linux上Oracle安装前汉字乱码和安装后创建数据库乱码的解决方法(含附件)

    为了解决安装前的汉字乱码,你需要按照以下步骤调整系统环境: 1. **设置locale**: 在Linux中,locale是决定系统如何处理字符编码的配置。确保你的locale设置支持UTF-8,例如`en_US.UTF-8`。可以使用`locale -a`...

    解决Oracle XE中文乱码问题

    ### 解决Oracle XE中文乱码问题 #### 背景与问题概述 在使用轻量级数据库Oracle XE的过程中,部分用户可能会遇到中文字符显示为乱码的问题。这一问题通常发生在数据库设置不当或者字符集配置错误的情况下。中文...

    linux 部署系统jdk6 tomcat6安装配置 oracle11g中文显示乱码

    ### Linux部署系统JDK6与Tomcat6安装配置及Oracle11g中文显示乱码解决方案 #### 一、概述 本文将详细介绍如何在Linux环境下安装配置JDK6、Tomcat6以及解决Oracle11g数据库中文显示乱码的问题。整个过程涵盖了从...

    oracle中文乱码解决的办法

    服务器为windows server 2003,正常安装完oracle客户端后,插入数据时,发现中文都是?。 异常: PLL/SQL中输入select userenv(‘LANGUAGE’) From Dual,结果为AMERICAN_AMERICA.US7ASCII, 注册表中[HKEY_LOCAL_...

    oracle乱码?号改成中文 +环境配置

    通过上述方法,可以有效地解决Oracle数据库中出现的中文乱码问题。需要注意的是,在实际操作过程中可能需要结合具体情况进行调整。例如,对于已经存在的数据表和字段,可能还需要进行字符集转换等额外操作。此外,...

    rlwrap-0.37.tar.gz

    描述中提到的“解决sqlplus连接Oracle出现乱码问题”是指在使用sqlplus连接Oracle数据库时可能会遇到字符编码不匹配导致的乱码问题。这通常与终端环境的字符集设置、数据库的字符集设置以及sqlplus自身的配置有关。...

    linux安装oracle 11g乱码(图解)

    本篇文章将详细解析三种解决Linux安装Oracle 11g乱码的方法。 方法一:调整Linux系统的字符集设置 1. 首先,确认当前Linux系统的字符集,可以通过`locale`命令查看: ``` locale ``` 2. 如果发现字符集不支持中文,...

    Oracle中文乱码,字符集问题处理

    这里将告诉您Oracle中文乱码,字符集问题处理,具体实现方法:  1. 右键计算机,选择属性,增加环境变量 NLS_LANG:SIMPLIFIED CHINESE_CHINA.ZHS16GBK  2.进入注册表,依次单击HKEY_LOCAL_MACHINE –&gt;...

    oracle 客户端不支持中文解决办法

    ### Oracle客户端中文显示问题及解决方案 #### 问题背景与描述 在Linux环境下安装Oracle数据库时,如果默认的字符集设置为WE8ISO8859P1,将无法支持中文字符。具体表现为,在客户端录入中文数据时能够正常显示,但...

    Oracle 8i字符集乱码问题析及其解决办法

    重新启动SQLPlusWorkSheet,此时中文字符集乱码问题应该已经被解决,中文显示恢复正常。 #### 四、总结 通过对Oracle 8i字符集乱码问题的深入分析,我们了解到问题的根本在于Oracle 8i中部分程序采用了Java技术...

    oracleimp导入中文乱码实用.pdf

    在Oracle数据库管理中,遇到导入数据时出现中文乱码的问题,通常与字符集设置有关。此问题中的情况是,从一个使用ZHS16GBK字符集的源数据库导出的数据在导入到使用WE8ISO8859P1字符集的目标数据库时出现了乱码。这是...

    PLSQL工具安装配置详细介绍

    通过以上步骤,你应该能成功安装和配置PLSQL Developer,并解决中文乱码问题。记住,每次Oracle客户端或PLSQL Developer有新版本发布时,最好保持更新,以获得最佳的性能和兼容性。同时,如果你遇到其他问题,查阅...

    客户端软件

    3. **设置环境变量**:添加系统环境变量,包括`NLS_LANG`以解决中文字符乱码问题,设置为`SIMPLIFIED CHINESE_CHINA.ZHS16GBK`;`TNS_ADMIN`指向Oracle客户端的安装目录;`Path`中包含`C:\instantclient_11_1`,使得...

    Oracle11g安装完整步骤

    - **LANG:** 设置为`zh_CN.GBK`,解决中文乱码问题。 - **ORACLE_HOME:** 指定客户端文件夹的位置,例如`D:\ProgramFiles\instantclient_11_2`。 - **PATH:** 添加`D:\ProgramFiles\instantclient_11_2`,便于...

Global site tag (gtag.js) - Google Analytics