字符集的简要概述

oracle031



字符集的简要概述

字符集:就是一张字符和编码的对应表。

1、字符集的作用和含义

字符编码

使用场合

数据库字符集

(1)用来存储CHAR, VARCHAR2, CLOB, LONG等类型数据

(2)用来标示诸如表名、列名以及PL/SQL变量等

(3)用来存储SQL和PL/SQL程序单元等

国家字符集

(1)用以存储NCHAR, NVARCHAR2, NCLOB等类型数据

2、客户端OS字符集、NLS_LANG设置、服务器端OS字符集、Oracle数据库字符集

字符集之间的关系

正确设置字符集

3、字符集出现问题以后的判断流程

存储的是错误的字符编码

存储的是正确的字符编码

4、locale、locale -a、chcp

5、字符集命名

Oracle的字符集命名遵循以下命名规则:

<Language><bit size><encoding>

即:  <语言><比特位数><编码>

比如: ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集

US7ASCII //美国人选择的字符集,只能是美国使用的字符不超过128个

zhs16cgb231280//中国人使用的字符集,存储中国部分字符

AL32UTF8//oracle数据库字符集

AF16UTF16//oracle选择国家字符集

ZHS16GBK//中国使用的字符集,是包括所有中国字符,是zhs16chb231280的超集,不是严格超集

utf8//

超集     严格超集

NLS_LANG=<language>_<territory>.<client character set>

Language:显示oracle消息,校验,日期命名

Territory:指定默认日期、数字、货币等格式

Client character set:指定客户端将使用的字符集

例如:NLS_LANG=AMERICAN_AMERICA.US7ASCII

AMERICAN是语言就是登录到数据库后,数据库自身所提示的信息是那种语言不是字符编码;

AMERICA是地区表示不同地区所显示信息不同比如说时区、货币等;

US7ASCII是客户端字符集

Oracle提供若干NLS参数定制数据库和用户机以适应本地格式,例如有NLS_LANGUAGE,NLS_DATE_FORMAT,NLS_CALENDER等,可以通过查询以下数据字典或v$视图查看。

NLS_DATABASE_PARAMETERS--显示数据库当前NLS参数取值,包括数据库字符集取值

NLS_SESSION_PARAMETERS--显示由NLS_LANG 设置的参数,或经过alter session 改变后的参数值(不包括由NLS_LANG 设置的客户端字符集)

NLS_INSTANCE_PARAMETE--显示由参数文件init<SID>.ora 定义的参数V$NLS_PARAMETERS--显示数据库当前NLS参数取值

select * from nls_session_parameters

NLS_LANGUAGE     SIMPLIFIED CHINESE

NLS_TERRITORY     CHINA

NLS_CURRENCY     ¥

NLS_ISO_CURRENCY     CHINA

NLS_NUMERIC_CHARACTERS     .,

NLS_CALENDAR     GREGORIAN

NLS_DATE_FORMAT     DD-MON-RR

NLS_DATE_LANGUAGE     SIMPLIFIED CHINESE

NLS_SORT     BINARY

NLS_TIME_FORMAT     HH.MI.SSXFF AM

NLS_TIMESTAMP_FORMAT     DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT     HH.MI.SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT     DD-MON-RR HH.MI.SSXFF AM TZR

NLS_DUAL_CURRENCY     ¥

NLS_COMP     BINARY

NLS_LENGTH_SEMANTICS     BYTE

NLS_NCHAR_CONV_EXCP     FALSE

select * from nls_database_parameters

NLS_LANGUAGE     AMERICAN

NLS_TERRITORY     AMERICA

NLS_CURRENCY     $

NLS_ISO_CURRENCY     AMERICA

NLS_NUMERIC_CHARACTERS     .,

NLS_CHARACTERSET     ZHS16GBK

NLS_CALENDAR     GREGORIAN

NLS_DATE_FORMAT     DD-MON-RR

NLS_DATE_LANGUAGE     AMERICAN

NLS_SORT     BINARY

NLS_TIME_FORMAT     HH.MI.SSXFF AM

NLS_TIMESTAMP_FORMAT     DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT     HH.MI.SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT     DD-MON-RR HH.MI.SSXFF AM TZR

NLS_DUAL_CURRENCY     $

NLS_COMP     BINARY

NLS_LENGTH_SEMANTICS     BYTE

NLS_NCHAR_CONV_EXCP     FALSE

NLS_NCHAR_CHARACTERSET     AL16UTF16

NLS_RDBMS_VERSION     11.2.0.1.0

select userenv(‘language‘) from dual;//查询客户端的

USERENV(‘LANGUAGE‘)

----------------------------------------------------

AMERICAN_AMERICA.ZHS16GBK

select nls_charset_name(to_number(‘0354‘,‘xxxx‘)) from dual;

NLS_CHARSET_NAME(TO_NUMBER(‘0354‘,‘XXXX‘

----------------------------------------

ZHS16GBK

echo $NLS_LANG

SQL> !echo $NLS_LANG

american_america.zhs16gbk

select to_char(nls_charset_id(‘ZHS16GBK‘), ‘xxxx‘) from dual;

TO_CH

-----

354

SQL>

select  dump(‘abc‘,1016) from dual;

DUMP(‘ABC‘,1016)

--------------------------------------------

Typ=96 Len=3 CharacterSet=ZHS16GBK: 61,62,63

SQL>

select * from V$NLS_VALID_VALUES;//This view lists all valid values for NLS parameters.

如果软件有字符集,那么系统的字符集就会失效;假如软件不带字符集,那么久使用操作系统的字符集

oracle的所有字符集转换都是在oracle端转换的

oracle接受的都是已经编号码的字符

oracle存储的都是oracle数据库的编码格式存储的

oracle需要在编码之前询问传来的端使用什么编码的,假如相同就直接存储,不同就转码而客户端只编码

NLS_LANG参数要和客户端操作系统的字符集一致。NLS_LANG相当于于oracle打交道的

sql developer和sqlplus一样没有字符集

时间: 2024-08-07 20:06:07

字符集的简要概述的相关文章

java容器简要概述

java中集合框架的概述 java集合类主要用于保存对象的. 常用的集合对象: Colletion接口,Collection接口是集合中的顶层容器,表示的是一组对象,它的下面有两个子接口List接口和Set接口. List接口:元素有序,可以重复. ArrayList:底层以数组进行存储元素,存储在ArrayList中的元素是有序的,当容量不足时可以自动扩容. LinkedList:底层以链表进行存储元素,插入和删除效率高. Set接口:元素无序,不可以重复. HashSet:底层是基于散列表实

排序算法---思想简要概述

比较排序: 涉及知识: 分治法:将一个问题分解成规模更小.结构相似的子问题,解决问题A,变成了解决问题A1和A2,解决问题A1变成了解决问题A11和A12...,一直到最小单元,当最小单元问题解决后,依次向上返回,问题A得以解决.因为问题和子问题之间解决思路是相似的,所以解决时会调用相同的程序体,表现为问题调用自己解决子问题,而结果则是从最小单元依次向上返回,称之为递归. 1. 插入排序:在已排序好的序列中,给要插入元素找到并空出应在位置,并插入该元素. 2. 合并排序:将排序分解为合并两个内部

jQuery事件绑定.on()简要概述及应用

前几天看到事件委托的时候,关于live()方法讲的不是很详细,就去搜了一下关于live()和delegate()的,最后看源码发现bind()和delegate()都是由on()实现的,感兴趣的朋友可以了解下,或许本文对你有所帮助 前几天在看<jquery基础教程>,看到事件委托的时候,关于live()方法讲的不是很详细,就去搜了一下关于live()和delegate()的. 然后在一处看到live()已经被移除了,囧,然后去看了最新的jq源码,果然被移除了,现在是1.9.1版本,不知道liv

Android 后台服务简要概述

本篇文章主要讲述android servivce相关知识,其中会穿插一些其他的知识点,作为初学者的教程.老鸟绕路 本文会讲述如下内容: - 为什么要用Service - Service及其继承者IntentService - 一个后台计数器的例子来讲述Service - Service如何与UI组件通信 为什么要用Service 我们接触android的时候,大部分时候是在和activity打交道,但是有些比如网络下载.大文件读取.解析等耗时却又不需要界面对象的操作.一旦退出界面,那么可能就会变

while和do while循环的简要概述

循环结构 1.while结构 在英文中"while"这个词的意思是"当",而在 Java 程序设计中,也可以将其理解为"当",其语法结构是:while (条件){     目的;    //一段代码 } 当条件为真时,进入循环. while结构的特点是先判断再执行. 1 package cn.jbit.loops1; 2 3 public class Descending { 4 5 /** 6 * 从100每次递减5输出直至5 7 */ 8 p

简要概述元胞自动机及其应用

谈一些自己的所学,有错误请指正. 元胞自动机( Cellular Automata) 是 20 世纪 50 年代初由计算机之父冯·诺依曼( J. von Neumann) 为了模拟生命系统所具有的自复制功能而提出来的.此后,史蒂芬·沃尔夫勒姆( Stephen Wolfram) 对元胞自动机理论进行了深入的研究,例如,他对一维初等元胞机全部 256 种规则所产生的模型进行了深入研究,并将元胞自动机分为平稳型.周期型.混沌型和复杂型 4 种类型. 元胞自动机采用离散的空间布局和离散的时间间隔,将元

C语言修饰词violate的简要概述

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值(From Memory),而不是使用保存在寄存器里的备份.下面是volatile变量的几个例子: 1) 并行设备的硬件寄存器(如:状态寄存器)2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)3) 多线程应用中被几个任务共享的变量这个多用在嵌入式开发中,一般场合不需要使用.

堆和栈简要概述

我们首先来说一下堆和栈的概念 堆栈是两种数据结构.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场.要点:堆,队列优先,先进先出[1]  .栈,先进后出(First-In/Last-Out). 空间分配 栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 堆(操作系统): 一般由程序员分配释放, 若程序员

GLSurfaceView特性的简要概述

GLSurfaceView提供了下列特性: 1> 管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上. 2> 管理一个EGL display,它能让opengl把内容渲染到上述的surface上. 3> 用户自定义渲染器(render). 4> 让渲染器在独立的线程里运作,和UI线程分离. 5> 支持按需渲染(on-demand)和连续渲染(continuous). 6> 一些可选工具,如调试.