前言
在历史数据转换项目中遇到中文字符插入问题:
1. 字符的长度明明是正常,可是偏偏提示不能插入,列值过大
通过寻找问题,理解问题,上网查找等等,终于找到了问题的根源所在:
US7ASCII编码英文字符一般是以一个字节来存储的,7位的编码方案最多只能
代表128个字符
ASCII编码可以表示的最大字符数是256,其实英文字符并没有那么多,一般只
用前128个(最高位为0),其中包括了控制字符、数字、大小写字母和其他
一些符号,而最高位为1的另128个字符被成为“扩展ASCII”,一般用来存放
英文的制表符、部分音标字符等等的一些其他符号.用来处理英文没有什么问
题前128个(最高位为0),其中包括了控制字符、数字、大小写字母和其他
一些符号 而最高位为1的另128个字符被成为“扩展ASCII”,一般用来存放
英文的制表符、部分音标字符等等的一些其他符号.用来处理英文没有什么问
题
1.1 汉字占用2个字节(GB2312)
1.2 汉字占用3个字节(AL32UTF8)
UTF= UCS Transformation Format UCS转换格式
UTF-8定义了一种“区间规则”,可以和ASCII编码保持最大程度的兼容 UTF-8有点类似于Haffman编码,它将Unicode编码为
00000000-0000007F的字符,用单个字节来表示;
00000080-000007FF的字符用两个字节表示
00000800-0000FFFF的字符用3字节表示
Unicode-16规范没有指定FFFF以上的字符,
UTF-8最多是使用3个字节来表示一个字符。
但理论上来说,UTF-8最多需要用6字节表示一个字符
2. clob字段,clob长度设为2g,但在插入时,提示不能插入
一、什么是oracle字符集
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。
影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下:
NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中
Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK
1、查询oracle server端的字符集
select userenv(‘language’) from dual;
2、如何查询dmp文件的字符集
用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:
select nls_charset_name(to_number('0354','xxxx')) from dual;
Result:ZHS16GBK
如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):
cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
3、查询oracle client端的字符集
dos窗口里面自己设置,比如:
set nls_lang=AMERICAN_AMERICA.ZHS16GBK
这样就只影响这个窗口里面的环境变量
oracle的字符集有互相的包容关系。如us7ascii就是zhs16gbk的子集,从us7ascii到zhs16gbk不会有数据解释上的问题,不会有数据丢失。在所有的字符集中utf8应该是最大,因为它基于unicode,双字节保存字符(也因此在存储空间上占用更多)。
分享到:
相关推荐
GBK字符集是为了解决GB2312字符集无法覆盖所有汉字的问题而产生的。GBK字符集不仅包含了GB2312的所有汉字和符号,还增加了大量的汉字,并对一些常用但未被GB2312收录的汉字进行了补充,使得GBK成为了更加全面的汉字...
Big5,全称“大五码”,是台湾地区广泛使用的字符集,主要用于传统的中文计算机系统。它包含了大部分常用繁体汉字,但不包括所有汉字,尤其是许多罕见和古籍中的字符。相比之下,UTF-8作为Unicode的一部分,能涵盖...
### 常用汉字UTF-8字符集解析与应用 #### 概述 在数字信息时代,字符编码是数据处理的基础。UTF-8(8位通用转换格式)是一种可变长度的字符编码,用于表示Unicode标准中的字符。《常用汉字utf-8字符集》主要收集了...
Linux 下 Oracle 中文乱码字符集设置 Linux 下的 Oracle 数据库在导入数据库时...Linux 下的 Oracle 数据库中出现中文乱码问题可以通过修改字符集格式来解决,将字符集格式修改成支持中文的格式可以正常显示中文字符。
本篇文章主要讨论了CentOS7系统中如何设置中文字符集,以便正确显示中文字符。 首先,我们来看字符编码和字符集的概念。ASCII是最基础的字符编码,它为128个基本的英文字符分配了7位二进制数。随着全球化的发展,...
常见的Oracle字符集有AL32UTF8(支持Unicode的UTF-8编码)、WE8ISO8859P1(西欧字符集)、ZHS16GBK(简体中文GB18030编码)等。 六、多语言环境下的字符集配置 在处理多语言数据时,Oracle提供了NLSSORT参数来调整...
SQL SERVER 字符集问题之一解决指南 在使用 SQL SERVER 时,字符集问题是一个常见的问题之一。在本文中,我们将讨论 SQL SERVER 字符集问题之一解决方案,解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_...
### 关于GBK和Unicode字符集转换乱码问题 在计算机科学与互联网技术中,字符集是一种用于表示文本的标准集合,不同的字符集适用于不同的语言环境。本文将深入探讨GBK与Unicode这两种字符集之间的转换问题,特别是在...
汉字字符集编码是计算机处理汉字的关键技术,它允许计算机存储、显示和处理汉字。本压缩包包含四个重要的汉字字符集编码对应表,分别是GB2312-80(国标码)、GBK(大字库)、Big5(大五码)和Unicode(大字符集)。...
使用GDI32中API计算字符串的精确象素长度
游戏 Unity TMP 中文字符集 更新中文字符 更新TMP材质 常见中文字符集
7000汉字+符号+英文字符集
4. 字符集的 importance:在处理汉字时,字符集的问题非常重要,需要正确地处理字符集,否则可能会出现问题。 相关知识点: 1. C# 中的 Encoding 类:Encoding 类提供了多种字符集处理方式,例如 Default、UTF8、...
unity TextMeshPro 字体 3500汉字+符号+英文字符集
Sybase数据库中文字符集配置详解 Sybase数据库中文字符集配置是指在Sybase数据库中正确配置中文字符集的过程,以便正确...正确配置Sybase数据库的中文字符集可以避免中文字符乱码的问题,提高数据库的可靠性和稳定性。
本文将详细介绍如何将Sybase数据库的默认字符集从CP850转换为支持中文的CP936,以及在这一过程中可能遇到的问题及解决方案。 #### 二、基础知识概述 1. **字符集**:字符集是用于定义字符编码方案的一组规则,它...
总结,这个“最全的中文车牌字符集”是一个宝贵的资源,对于开发高效、准确的车牌识别系统至关重要。通过深度学习技术,我们可以充分利用这些数据,构建出能够处理中文车牌的智能算法,服务于现代社会的多元化需求。
总结,GB18030字符集作为中文编码的重要标准,对于理解和处理中文信息具有重要意义。通过深入研究"gb18030所有字符集与码表.xls",开发者可以更好地掌握GB18030的编码规则,从而在嵌入式系统和其他应用场景中实现...
JAVA及相关字符集编码问题 在深入探讨JAVA与字符集编码问题之前,我们首先需要理解不同字符集编码的基本概念以及它们在JAVA环境中的应用。字符集编码是计算机系统中表示文字的一种方式,它决定了如何将字符转换为二...