设置 Oracle,Sqlplus,Linux 设置为UTF8 专治中文乱码 ,查看表的创建过程

本文谢绝转载原文来自http://990487026.blog.51cto.com


思想:

1,设置Linux字符集 为UTF8编码

2,设置Oracle字符集 为UTF8编码

3,设置sqlplus客户端环境 为UTF8编码

4,如果是在Windows使用CRT/Xshell远程工具,请设置软件编码为UTF8[略...]




1,先设置oracle为UTF8

[[email protected] ~]$ sqlplus /nolog
SQL> conn /as sysdba;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter system set aq_tm_processes=0;
SQL> alter database open;
SQL> alter database character set internal_use utf8;
SQL> shutdown immediate;
SQL> startup;
SQL> conn scott/11
SQL> set linesize 299;
SQL> set pagesize 299;
SQL> select * from v$nls_parameters where PARAMETER=‘NLS_CHARACTERSET‘;
PARAMETER	 VALUE
---------------- -----
NLS_CHARACTERSET UTF8
SQL> select userenv(‘language‘) from dual; 
AMERICAN_AMERICA.UTF8
SQL> exit


2,Linux系统一般默认都是UTF8,以CentOS为例:

[[email protected] ~]$ cat /etc/sysconfig/i18n 
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

3,设置sqlpuls环境变量,测试

NLS_LANG的值来自下面这条语句:

SQL> select userenv(‘language‘) from dual; 

AMERICAN_AMERICA.UTF8

[[email protected] ~]$ cd /home/oracle/
[[email protected] ~]$ echo "export NLS_LANG=\"AMERICAN_AMERICA.UTF8\"" >> .bashrc
[[email protected] ~]$ . .bashrc
[[email protected] ~]$ echo $NLS_LANG
AMERICAN_AMERICA.UTF8
[[email protected] ~]$ sqlplus scott/11
SQL> set linesize 299;
SQL> set pagesize 299;
SQL> create table student (sid number(2) primary key, sname varchar2(50) not null,address varchar2(50), sex varchar2(1),age number(2));
SQL> insert into student values(1,‘宋江‘,‘梁山好汉‘,‘m‘,20);
SQL> select * from student;
       SID SNAME     ADDRESS	  S	  AGE
---------- ----- --- -----------  - - ----------
         1 宋江      梁山好汉     m         20

到scott原始表测试一下:	 
SQL> insert into dept(deptno,dname,loc) values(23,‘中‘,‘国‘);
SQL> select * from dept;
        23 中             国
	10 ACCOUNTING	  NEW YORK
	20 RESEARCH	  DALLAS
	30 SALES	  CHICAGO
	40 OPERATIONS	  BOSTON
6 rows selected.

查看表的创建过程:

使用DBMS_METADATA.GET_DDL(‘TABLE‘,‘TABLE_NAME‘)函数

SQL> set pagesize 0;
SQL> set long 1000;
SQL> select DBMS_METADATA.GET_DDL(‘TABLE‘,‘STUDENT‘) from dual;
  CREATE TABLE "SCOTT"."STUDENT"
   (	"SID" NUMBER(2,0),
	"SNAME" VARCHAR2(50) NOT NULL ENABLE,
	"ADDRESS" VARCHAR2(50),
	"SEX" VARCHAR2(1),
	"AGE" NUMBER(2,0),
	 PRIMARY KEY ("SID")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER
_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE D
EFAULT)
  TABLESPACE "USERS"  ENABLE
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS L
OGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE
 DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"
SQL>


时间: 2024-08-04 05:24:53

设置 Oracle,Sqlplus,Linux 设置为UTF8 专治中文乱码 ,查看表的创建过程的相关文章

Oracle sqlplus 常用设置

Oracle sqlplus 常用设置 §2.5 SQLPLUS常用设置 使用过程中大都需要进行必要的环境设置才能完成我们所需要的输出. 所有环境的设置由SET命令加相应的环境变量来完成.下面是常用的环境设置: §2.5.1   ARRAYSIZE(取回的行数)SET ARRAY[SIZE]{integer} 一次可以提取(Fetch)的行的数目,1->5000,当有较长字段时应设小些. §2.5.2   AUTOCOMMIT(自动提交)SET AUTO [COMMIT] { [ OFF | O

C# 页面设置成UTF-8编码格式,中文乱码问题

在.aspx页面可以设置编码格式为UTF-8,也可以再.aspx.cs后台代码设置(Response.Charset = "UTF-8"),刚开始以为这样OK了,那只调试的时候还是乱码. 原来还要在Web.config里面设置,在<system.web>节点里面添加"<globalization requestEncoding="utf-8"  responseEncoding="utf-8" />"

[转载] linux下打开windows txt文件中文乱码问题

原文链接 在linux操作系统下,我们有时打开在windows下的txt文件,发现在windows下能正常显示的txt文件出现了中文乱码. 出现这种情况的原因为两种操作系统的中文压缩方式不同,在windows环境中中文压缩一般为gbk,而在linux环境中为utf8,这就导致了在windows下能正常显示 txt文件在linux环境下打开呈现了乱码状态. 解决方法:在linux用iconv命令,如乱码文件名为shujujiegou.txt,那么在终端输入如下命令: iconv -f gbk -t

linux下打开windows txt文件中文乱码问题 (转载)

转自:http://blog.csdn.net/imyang2007/article/details/7448177 在linux操作系统下,我们有时打开在windows下的txt文件,发现在windows下能正常显示的txt文件出现了中文乱码. 出现这种情况的原因为两种操作系统的中文压缩方式不同,在windows环境中中文压缩一般为gbk,而在linux环境中为utf8,这就导致了在windows下能正常显示 txt文件在linux环境下打开呈现了乱码状态. 解决方法:在linux用iconv

Linux下用freetds连接mssql中文乱码的问题【参考1】

由于工作原因我们需要通过php访问我们以前的Sql Server 2005数据,所以就有了这篇文章的诞生.废话就少说了,做程序设计的最不喜欢兜圈子了.用简介步骤说明问题,往下看.系统:   Linux数据库: Sql Server 2005 1.下载FreeTDS  官方网站:http://www.freetds.org  2.安装FreeTDS# tar zxvf freetds-current.tgz(解压)# ./configure --prefix=/usr/local/freetds

oracle服务端与客户端字符集不同导致中文乱码解决方案

1.问题描述 用pl/sql登录时,会提示"数据库字符集(ZHS16GBK)和客户端字符集(2%)是不同的,字符集转化可能会造成不可预期的后果",具体问题是中文乱码,如下图 2.问题分析 不管错误信息中你的数据库字符集是什么,都是由于数据库服务端和你的客户端字符集不统一造成的,所以只要将客户端字符集改为和服务端字符集一致就能解决问题. 3.问题解决步骤 3.1查看服务端字符集 pl/sql里查询 select userenv('language') from dual 3.2查看客户端

Oracle 数据导入到新库后出现中文乱码

Oracle 数据导入到新库出现中文乱码的原因:旧库和新库的字符集不一致引起的.1.查询字符集的值select parameter,value from nls_database_parameters where parameter='NLS_CHARACTERSET';2.更改字符集SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP MOUNT;SQL> ALTER SESSION SET SQL_TRACE=TRUE;SQL> ALTER SYSTEM E

MySQL对JSON类型UTF-8编码导致中文乱码探讨

前言 继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有点不解,于是乎,有了本文,我们来学习字符编码,在学习的过程中,我发现对于MySQL中JSON类型的编码导致数据中文出现乱码还有可深挖之处,接下来我们来分析一下,若有错误之处,还请批评指出. 字符编码 评论中指出任何不在基本多文本平面的Unicode字符,都无法使用MySQL的utf8字符集存储,包括Emoji 表情(Emoji 是一种特殊的Unicode 编码,常见于IOS和Android 手机上)和很多不常

Oracle--sqlplus如何设置SQLPlus结果显示的宽度,ORACLE sqlplus提示符设置

一.SQLPlus查询的结果,可以根据自己的屏幕情况进行调节,设置如下: 1.设置一页面显示多少行数 show pagesize;   //首先查看目前的pagesize,默认是14 set pagesize 100; //将pagesize设置好100,则可以一次显示够多行记录了 2.设置行的宽度 show linesize;   //查看目前的linesize,默认是80 set linesize 150; //设置成150或者更宽都可 注:以上的方法是临时有效的方法 二.永久设置sql*p