`
wsql
  • 浏览: 12098681 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

字符集问题的初步探讨(一)

阅读更多

<!--DWLayoutEmptyCell-->
原文发表于itpub技术丛书《Oracle数据库DBA专题技术精粹》,未经许可,严禁转载本文.

原文链接:

http://www.eygle.com/special/NLS_CHARACTER_SET_01.htm


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

由于不同语言及字符集的共同存储存在设置上具有一定的复杂性,字符集一度成为普遍困扰大家的一个主要问题。
本文试图就一些常见问题进行探讨,希望可以把一些实际经验共享给大家!

1. 字符集的基本知识

如果从头说起,字符集最早的编码方案来自于与ASCII.
这也是我们最常见的编码方式。该方案起源于1960年代初期,最初是美国国会图书馆制定用来作为美国图书馆界书目交换的共同标准,最后完善成为美国的国家标准ASCII(American Standard Codefor Information Interchange),之后进一步演变成世界性的计算机字符编码标准ISO646(其全名为7-bit coded character set for information interchange)。成为计算机编码方案的基础。

Oracle数据库最早支持的编码方案也就是US7ASCII.
但是我们知道,英文字符一般是以一个字节来存储的,7位的编码方案最多只能代表128个字符;经过扩展的8位的编码方案也只能代表256个字符,这远远不能满足计算机发展的需要,对于亚洲国家复杂的字符存储需要更多的码位,于是各种编码方案随之而生。

为了容纳全世界各种语言的所有字符和符号,解决不同编码之间的兼容和转换问题,1991年元月,10多家公司共同出资,组建Unicode协会,随后Unicode编码产生了。
Unicode协会的口号是: 给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论什么语言。
最初Unicode编码使用2-Byte(16bit)来进行编码,但是最多只能容纳65536个字符,仍然不够使用,后来进行了扩充,也就是Unicode3.1标准,增加了额外的补充字符定义,现在Unicode4.0标准已经发布,具体可以参考Unicode官方站点:

www.unicode.org

Unicode编码方案主要有三个实施标准:
UTF-8
USC-2
UTF-16
Oracle从7.2开始支持UTF-8编码,提供Unicode编码支持。

按照各种标准的含义,Oracle推荐,如果你的数据库需要存放不同语言的不同符号和字符,建议使用Unicode编码方案。诚然,Unicode方案可以表示更多的字符,但是由于多位的存储,需要额外的存储空间和网络传输,所以选择最适合的数据库字符集仍然需要慎重考虑。

分享到:
评论

相关推荐

    oracle 一点资料

    最后,"修改props$中字符集的恢复 - fengjin821的个人空间 - ITPUB个人空间 - powered by X-Space_files"和"字符集问题的初步探讨(三)-字符集的更改 - Oracle Life_files"可能是原始网页的资源文件夹,包含了图片、...

    Oracle查看编码格式

    - 比如,在支持中文、英文等多种语言的应用程序中,使用Unicode字符集(如UTF8)可以避免乱码问题。 **3. 性能优化:** - 不同的字符集可能会对数据库性能产生影响,特别是在处理大量文本数据时。 - 选择合适的...

    哈曼树的应用

    通过对哈夫曼树的构建和应用原理的深入了解,我们能够更好地利用这一工具解决实际问题,尤其是在数据存储和传输方面,实现资源的有效节约。通过上述的编码、解码以及系统设计与优化步骤,可以确保基于哈夫曼树的数据...

    字符串转换为ascii值的函数

    在Delphi编程环境中,ASCII值是字符编码的一种标准表示方式,每一个可打印的字符都有一个特定的ASCII值,这个值范围从0到127(对于标准的7位ASCII字符集)。例如,字母'A'的ASCII值是65,而'a'的ASCII值是97。 ### ...

    形式语言与自动机:第十三讲 计算理论初步.pdf

    在这一讲中,我们聚焦于形式语言与自动机中的计算理论初步,主要涉及对角语言、通用语言、问题归约以及与图灵机相关的概念。 首先,对角语言(Diagonalization Language)是一个重要的概念,它用于揭示某些语言的...

    基于Matlab的字符识别

    5. **分类器训练**:使用已知的字符样本集,训练一个分类器,如支持向量机(SVM)、神经网络或者K近邻(KNN)。分类器的目标是根据提取的特征将字符正确分类。 6. **字符识别**:将经过特征提取的连通域输入到训练...

    jsp中文问题解决方案.pdf

    1. **统一字符集**:在整个项目中统一使用一种字符集,比如UTF-8。这样可以避免因不同环节采用不同字符集而导致的乱码问题。 2. **配置JSP页面**:在JSP页面头部明确声明字符集,例如`;charset=UTF-8" %&gt;`。 3. **...

    形式语言与自动机:第十三讲 计算理论初步

    5. **问题的归约**:在计算理论中,一个问题可以通过归约(reduction)转换为另一个问题来解决,这常用于证明一个问题的难度。例如,通过将一个问题映射到已知复杂度的问题上,可以推测原问题的复杂度。 6. **Post...

    IOI国家集训队论文集1999-2019

    许智磊 -《浅谈补集转化思想在统计问题中的应用》 张 宁 -《猜数问题的研究》 张云亮 -《论对算法的选择》 周 源 -《浅析"最小表示法"思想在字符串循环同构问题中的应用》 ## 2004 何 林 -《信息学中守恒法...

    Python 3 实现图片转彩色字符-内含源码以及设计说明书(可以自己运行复现).zip

    3. **字符映射**:选择一组字符集来代表不同的颜色或灰度等级。例如,可以使用ASCII字符集,其中不同字符对应不同灰度等级。 4. **字符布局**:根据图片的尺寸,将每个像素替换为相应的字符,生成字符图像。 5. **...

    国家集训队2015-2018论文集.zip

    人工智能的初步探讨,如机器学习和深度学习,也在这年的论文中有所体现。 2017年国家集训队论文集: 这一年,集训队的焦点扩展到了分布式计算和并行算法。学生们分析了P、NP和NPC问题,以及如何设计高效的分布式...

    面向对象程度设计基础课件 01 第一章 程序设计与C++语言初步.ppt

    C++使用ASCII字符集,其中包含保留字和关键字,这些词汇具有特殊的编程含义。例如,“int”是保留字,用于声明整型变量,而“if”是关键字,用于条件判断。 在描述语言语法时,Backus-Naur范式(BNF)是一种常用的...

    video2chars.zip

    这通常涉及到一个字符集,其中每个字符对应一种灰度值。根据视频帧的像素亮度,选择相应的字符,形成字符画。 - **渲染逻辑**:在确定了每个像素对应的字符后,程序会按照视频帧的宽度和高度,将字符进行排列,形成...

    VS2017下PBNI环境搭建及初步使用

    - 将“字符集”设为“使用 Unicode 字符集”(也可以选择多字节方式)。 - 在“C/C++”-&gt;“常规”中,修改“附加包含目录”,添加路径 `%PBNISDK170%\include`。 #### 四、PBNI 应用实例 假设我们需要实现一个 ...

    kettle常见控件(输入、输出,字段选择、设置变量、记录集连接、值映射、字符串替换、js、Java)的使用案例

    本教程将深入探讨Kettle中的一些关键控件,以及如何在实际项目中应用它们。 1. 输入控件: - **数据库输入**:Kettle提供了多种方式从数据库中抽取数据,如"数据库输入"步骤,可以配置SQL查询来提取所需记录。通过...

    XML初步到精通

    在本教程“XML初步到精通”中,我们将深入探讨XML的基础概念、语法以及它在IT领域的广泛应用。 一、XML简介 XML起源于1998年,由万维网联盟(W3C)制定,它是一种可扩展的标记语言,旨在提供一种结构化的方式来组织...

    第12章 指针的基础与1602液晶的初步认识

    - **特点**:1602液晶屏具有16个显示字符宽度和2行显示能力,支持多种字符集,易于控制且功耗较低。 - **控制原理**:1602液晶屏通过特定的控制信号进行操作,包括设置显示模式、清屏、光标移动等功能。 - **接口**...

    container.zip

    每张图像都是一个完整的集装箱箱号,而非单个字符的分离标注。这意味着每个箱号作为一个整体被捕捉和标记,这有助于训练模型学习箱号的整体结构和特征,而非单独的字符。例如,"CSLU8116467"这样的箱号在标注中作为...

    基于深度学习的字符识别工程文件

    在本项目中,我们主要探讨的是“基于深度学习的字符识别工程文件”,这涉及到一系列的机器学习和深度学习技术,特别是在计算机视觉领域的应用。以下是该项目的详细知识点: 1. **深度学习基础**:深度学习是一种...

    后缀数组1

    - `da`函数是DA算法的核心,输入包括字符数组`r`(表示字符串的字符序列),`sa`(存储排序后的后缀索引),以及字符串长度`n`和字符集大小`m`。 3. **DA算法步骤**: - 初始化:设置辅助数组ws,统计每个字符...

Global site tag (gtag.js) - Google Analytics