Oracle数据库的字符集实际应用

数据库 Oracle
以下的文章主要描述的是Oracle数据库的字符集的实际应用,以及字符集的选择需要优先考虑应用程序的需要,以下就是文章的详细内容介绍,望大家借鉴。

假如你对Oracle数据库的字符集的实际应用不是很了解的话,下面的文章就是对Oracle数据库的字符集的相关内容的具体介绍,其实我个人认为Oracle数据库的字符集是数据库操作的一种常用手段。

如何选择合适的Oracle数据库的字符集

数据库需要存储的数据类型是字符集选择的首要考虑目标。

 

对于只存储英文信息的数据库等来说,一般采用US7ASCII或WE8ISO8859P1等单字节的字符集就比较合适,在性能和空间上也是***,

 

同样,存储了中文信息的数据库,如果采用单字节的字符集,也是不合适的。在这种情况下,Oracle数据库的字符集虽然是US7ASCII或WE8ISO8859P1编码,但里面存储的数据编码实际上却是另外的编码格式,这种不一致的情况很容易引起问题,建议不要这样使用。Oracle提供了很多种类的字符集供客户选择,就是要满足各种文字不同的编码需要。

 

字符集的选择需要优先考虑应用程序的需要。

 

目前出于国际化的需要,软件需要可以对不同的语言文字进行处理,尤其一个系统中需要容纳多种语言文字的时候,一般都会采用Unicode这样的通用解决方案,即使会有一些空间和运行效率的损失也是值得的。此时数据库字符集建议可以采用AL32UTF8或UTF8编码,一种比较理想的模式就是由程序负责编码格式的转换,而Oracle数据库只提供一个透明的数据存储,

 

客户在应用程序中输入数据,此时数据的编码格式是由客户操作系统的区域及语言设置决定的,如在简体中文XP的环境下,输入的中文编码属于GBK编码。在客户输入结束后,程序首先判断客户的本地环境,并把编码转换成UNICODE,并通过NET传送到服务器端。

由于客户端与服务器数据库的字符集均为UTF8格式,Oracle在传送过程中不会进行字符转换,直接把数据按UTF8格式存储到数据库中。查询时是一个反向的过程,应用程序从数据库中取出UTF8编码的数据,再由应用程序根据客户的本地环境,把UTF8编码的数据转换成客户本地的编码格式,***把结果数据显示给客户。

此方案的关键在于应用程序要能很好的支持UNICODE编码,编码的转换由应用程序来负责,Oracle数据库只是提供了一个数据存储功能。

 

对于部分程序来说,由于对UNICODE支持不够,没有提供编码的转换功能,则可以使用Oracle提供的字符集转换功能来实现同样的目的。客户在应用程序中输入数据,此时数据的编码格式是由客户操作系统的区域及语言设置决定的,如在简体中文XP的环境下,输入的中文编码属于GBK编码。

在客户输入结束后,程序直接把数据并通过NET传送到服务器端。由于客户端与服务器数据库的字符集不一致,因此Oracle会把客户端的编码转换成UTF8格式,再把数据按UTF8格式存储到数据库中。这种方案的优点就是程序可以不用支持UNICODE,由Oracle数据库自动进行转换。

由于数据库的字符集为UTF8,是其它字符集的超集,因此在转换过程中不会发生数据丢失的情况。对于英文的字符符号,在UTF8中使用单字节存储,转换的工作量很小,可以忽略,而对于一些亚洲字符集,在UTF8中一般需要两到三个字节存储,需要的Oracle数据库空间增加,而且转换的工作量也相对大一些,性能会有一些损失。

 

【编辑推荐】

  1. Oracle merge into的实操示例
  2. Oracle查询分页的存储过程实际代码示例
  3. Oracle数据库的安全,PL/SQL的SQL注入
  4. Oracle应用顾问发展计划 着力培养实用型软件人才
  5. Oracle创建Split 与Map 函数的代码示例
责任编辑:佚名 来源: 互联网
相关推荐

2010-04-21 09:49:10

Oracle数据库字符

2010-04-23 10:18:42

Oracle数据库字符

2010-04-13 13:24:04

Oracle数据库

2010-05-10 11:50:33

Oracle数据库字符

2010-04-13 13:33:37

Oracle字符集

2010-04-13 12:42:59

Oracle连接

2009-11-20 17:06:49

Oracle数据库字符

2019-09-11 15:13:57

Oracle数据库存储

2011-04-11 10:59:33

Oracle字符集

2011-04-11 11:05:12

Oracle字符集

2010-04-30 10:16:22

Oracle字符集

2009-11-20 16:52:35

Oracle字符集

2011-05-20 13:24:39

oracle字符集

2010-04-21 11:27:55

Oracle数据库

2010-04-27 13:21:58

Oracle数据字符集

2011-05-18 10:36:21

数据库数据导入

2011-08-15 21:17:38

Oracle数据库字符集

2010-04-28 17:29:07

Oracle字符集

2019-09-10 07:58:01

字符集MySQL数据库

2010-05-25 13:57:28

MySQL字符集
点赞
收藏

51CTO技术栈公众号