Oracle字符集的简单图解,中文乱码解决

  • 时间:
  • 浏览:1
  • 来源:uu快3和值_uu快3app_计划师

这也是亲戚亲戚亲们最常见的编码法律法律法律依据。该方案起源于19200年代初期,最初是美国国会图书馆制定用来作为美国图书馆界书目交换的并肩标准,最后完善成为美国的国家标准ASCII(American Standard Codefor Information Interchange),之前 进一步演变成世界性的计算机字符编码标准ISO646(其全名为7-bit coded character set for information interchange)。成为计算机编码方案的基础。

关于子集超集的映射关系,见如下Oracle官网的文档的Binary Subset-Superset Pairs

linux下首先locale 查看字符集

在创建数据库时,亲戚亲戚亲们可不前要指定字符集(CHARACTER SET)和国家字符集(NATIONAL CHARACTER SET)。

字符集用来存储:

     CHAR, VARCHAR2, CLOB, LONG等类型数据

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

     SQL和PL/SQL守护进程单元等

国家字符集用以存储:

     NCHAR, NVARCHAR2, NCLOB等类型数据

www.unicode.org

http://docs.oracle.com/database/121/NLSPG/applocaledata.htm#NLSPG591 

1、操作系统字符集

为了容纳全世界各种语言的所有字符和符号,处里不同编码之间的兼容和转换哪此的难题,1991年元月,10多家公司并肩出资,组建Unicode研究会,就让Unicode编码产生了。

Unicode研究会的口号是: 给每个字符提供了5个多唯一的数字,不论是哪此平台,不论是哪此守护进程,不论哪此语言。

最初Unicode编码使用2-Byte(16bit)来进行编码,就让 最多这麼容纳65536个字符,仍然不够使用,就让进行了扩充,也就说 Unicode3.1标准,增加了额外的补充字符定义,现在Unicode4.0标准可能性发布,具体可不前要参考Unicode官方站点:

在此之前 亲戚亲戚亲们前要搞清楚5个多概念,操作系统字符集,客户端字符集,Oracle字符集:

哪此设置在数据库创建时指定,亲戚亲戚亲们可不前要看一下数据库的创建脚本:

Oracle全球支持(即Globalization Support)允许亲戚亲戚亲们使用本地语言和格式来存储和检索数据。通过全球支持,Oracle可不前要支持多种语言及字符集,得以展示数据库的强大魅力。

PROD1 的结果如下,可不前要看后提示信息可能性变成中文,就让 可能性字符集非UTF8中文字符存入后将乱码

默认情况汇报下NLS_LANG是空的,此时NLS_LANG取默认安装时的值,PROD1是AMRICAN,PROD5是SIMPLIFIED CHINESE

Oracle数据库最早支持的编码方案也就说 US7ASCII.

就让 亲戚亲戚亲们知道,英文字符一般是以5个多字节来存储的,7位的编码方案最多这麼代表128个字符;经过扩展的8位的编码方案也这麼代表256个字符,这远远这麼满足计算机发展的前要,对于亚洲国家僵化 的字符存储前要更多的码位,于是各种编码方案随之而生。

老要碰到SQLPLUS展现乱码的哪此的难题,字符集和相关的定义全部都是说明就让 很少有能把哪此关系说的很简单易懂的。

4、接下来就说 展现测试,我安装了5个多数据库实例PROD1和PROD5,PROD1 的字符集是WE8MSWIN1252,PROD5的字符集是AL32UTF8

PROD5

5、PROD5 处在乱码,PROD1英文正常,设置下NLS_LANG参数

<>

按照各种标准的含义,Oracle推荐,可能性你的数据库前要存放不同语言的不同符号和字符,建议使用Unicode编码方案。诚然,Unicode方案可不前要表示更多的字符,就让 可能性多位的存储,前要额外的存储空间和网络传输,或多或少选泽 最适合的数据库字符集仍然前要慎重考虑。

2、该主机并未安装中文支持包,设置LANG后可不前要效果如下,显然无路何如调整NLS_LANG在这台机器上都无法展现中文

3、安装中文支持包,使用yum -y groupinstall chinese-support 可不前要安装中文支持包,安装过程略过,安装完毕后可不前要正常显示中文

数据库字符集:NLS_CHARACTERSET,可不前要在nls_database_parameters中查看当前数据库的字符集,安装数据库的之前 选泽 ,一般不修改,不过在新的字符集是现有字符集的严格超集的情况汇报下可不前要改,或多或少情况汇报下修改可能性原因分析分析数据库异常。类事将UTF8字符集修改为AL32UTF8

Unicode编码方案主要5个多实施标准:

UTF-8

USC-2

UTF-16

Oracle从7.2结速支持UTF-8编码,提供Unicode编码支持。

操作系统字符集:对应的参数是LANG,你什儿 参数应该是Oracle数据库的超集,可能性操作系统不支持,这麼亲戚亲戚亲们的数据就会乱码。这里的操作系统指的是客户端的操作系统。服务器端的操作系统不不影响数据的存取。

1. 字符集的基本知识

<>

总结:通过以上的实验可不前要看出,客户端展现与非 乱码是由NLS_LANG决定,处在中文乱码的情况汇报下,首先查看数据库的NLS_CHARACTERSET与非 支持中文存储,可能性不支持,无论何如设置均无法正常显示中文。Oracle官方文档上给出了各种语言的编码支持如下。

可能性从头说起,字符集最早的编码方案来自于与ASCII.

客户端字符集:对应的参数是NLS_LANG,可能性客户端未设置,此时则取的是安装时数据库的默认参数

为了帮助理解,我画了一张图如下,图中标红每项可能性一致表示数据的存储法律法律法律依据一致,即可能性LANG、NLS_LANG、NLS_CHARACTERSET的编码是一致的如UTF8,这麼数据的传输过程中不不异常,字符乱码就说 显示哪此的难题。

PROD5的结果如下,此时PROD5显示正常

可能性不同语言及字符集的并肩存储处在设置上具有一定的僵化 性,字符集一度成为普遍困扰亲戚亲戚亲们的5个多主要哪此的难题。

本文试图就或多或少常见哪此的难题进行探讨,希望可不前要把或多或少实际经验共享给亲戚亲戚亲们!