ocp
来源:互联网 发布:知乎收藏夹 rss 编辑:程序博客网 时间:2024/04/26 13:03
全球化支持
要汉字显示正确,只需要保证数据库的字符集和客户端的字符集一致即可,必不需要数据库字符集一定是汉字字符集.
- 字符集:决定了数据库所支持的语言标准
- 注:数据库中存储的字符语言与OS无关
- 2字符集命令
- 语言 位数 编码
- US 7 ASCII
- ZHS 16 GBK
- aL 32 utf8 (alL指所有语言)
- 3编码
- 1字节
- 7位于 US7 ASCII
- 8位 ISO-8859-1或WE8 ISO 8859P1
- 2宽度可变多字节
- AL32UTF8
- ZHS16CGB2312
- 3宽度固定的多字节(通常用于国家字符集)
- AL 16 UTF16
- 1字节
- ORACLE对汉字编码的支持
- 版本 支持的字符集 默认的字符集
- ORACLE 7.3 ZHS16C/GB231280 zhs16gbk
- ORACLE 8,8I,9I,10G,11G zhs16cgb2312-80/zhs16gbk zhs16gbk
- 国家字符集和数据字符集
- 国家字符集用手存储NCHAR,NVARCHAR2,NCLOBO类型的数据
- 带N开头表示无符号的。
- 主要用于货币和日期格式。
- 在创建数据库的时候指定,可以被改变但不建议。
- 建常使用默认AL16UTF16
- 数据库字符集(也称为核心字符集)。主要用于存储CHAR,VARCHAR2,CLOB,LOG类型的数据(列名,表名等,PL/SQL的变量及程序等)
- 在创建DB时定义,
- 不可以被修改,一修改就会数据库变乱码(除非特殊情况)
- 国家字符集用手存储NCHAR,NVARCHAR2,NCLOBO类型的数据
- 客户端的字符集的设置
- 需要设置环境变量NLS_LANG
- 要求NLS_LANG设置的字符集=数据库的字符集
- NLS——LANG的格式 <语言>_<区域>.<核心字符集>
- 实例:
- 修改核心字符集
- 可以修改系统表(字典表)PROPs$表,NAME列中的NLS_CHARACTERSET
常见问题
导出数据:导出数据时,数据库会使用客户端的字符集(而不是数据库字符集)出导入,所以如果客户端字符集不同于数据库字符集时。数据被导出来时字符集就已经变改变,即使再导回同一台机的同一个数据库也会产生乱码。这时需要在导出的时候设置客户端的字符集跟数据库字符集相同(设置nls_lang值)
导入数据
要求以下三者的编码必需一致,任意一个不一致都会乱码
- 导入的DMP文件的编码
- 查询:
- 查询该文件的第2,第3字节的16进制编码
- NLS_CHARSET_NAME(),SELECT NLS_CHARSET_NAME(TO_NUMBER('0354','XXXX')) FROM DUAL;
- 客户端NLS——LANG设置的编码
- 数据库的核心字符集编码
- 查询:select userenv('language') from dual;
E:/Documents and Settings/Administrator>sqlplus
SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 2月 24 09:52:23 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
请输入用户名: sys as sysdba
输入口令:
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> show parameter nls
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
nls_calendar string
nls_comp string
nls_currency string
nls_date_format string
nls_date_language string
nls_dual_currency string
nls_iso_currency string
nls_language string AMERICAN
nls_length_semantics string BYTE
nls_nchar_conv_excp string FALSE
nls_numeric_characters string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
nls_sort string
nls_territory string AMERICA
nls_time_format string
nls_time_tz_format string
nls_timestamp_format string
nls_timestamp_tz_format string
SQL> select sysdate from dual;
SYSDATE
--------------
24-2月 -08
SQL> alter session set nls_date_format='yyy-mm-dd';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
---------
008-02-24
SQL> alter session set nls_date_format='yyyy-mm-dd';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
----------
2008-02-24
SQL> set line 9000
SQL> select * from nls_database_parameters;
PARAMETER VALUE
------------------------------ -------------------------------------------------
-------------------------------
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
PARAMETER VALUE
------------------------------ -------------------------------------------------
-------------------------------
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 10.2.0.1.0
已选择20行。
SQL> SELECT NLS_CHARSET_NAME(TO_NUMBER('0354','XXXX')) FROM DUAL;
NLS_CHARSET_NAME(TO_NUMBER('0354','XXXX'
----------------------------------------
ZHS16GBK
SQL>
- ocp
- ocp
- OCP
- Ocp
- OCP
- ocp
- OCP
- ocp
- OCP考试
- OCP原则
- OCP题
- OCP构想
- OCP考试
- OCP原则
- oracle ocp
- 转载OCP
- 转载 OCP
- OCP考试内容
- ASP正则表达式详解
- 外包的迷惑
- 随便写写
- 转载说明
- linux操作之: 设置vim的自动缩进,安装vim7.1, 设置Kget为火狐的默认下载工具
- ocp
- VBScript中的正则表达式语法详解
- oracle全球化支持
- FLEX内存优化
- 家庭多台机器共享ADSL上网的方法(不带路由的猫+集线器(HUB)+若干根网线(三根以上,对于家庭两台机器以上))
- 三十岁前不要去在乎的29件事
- 新学期的目标
- Tomcat 的集群和负载均衡
- web.config详解