首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

警示:AL32UTF8字符集不是ZHS16GBK字符集的超集

从现象看,基本可以确认故障是字符集转换导致的,Oracle也强烈不建议做这种字符集转换的操作,幸好该客户的操作只是在一个测试环境中操作的。...不过,之前也一直有个误区,我们都知道AL32UTF8是可以支持多国语言的字符集,对于中文字节存储占用空间比ZHS16GBK多,然后第一反应就认为AL32UTF8应该是ZHS16GBK的超集。...而如果是绝对的超集,就不应该出现任何乱码的情况,可实际用户反馈的现象的确是有小部分出现乱码的情况,所以有必要在测试环境再次验证一下。...ORA-12712:新的字符集必须是旧字符集的超集。...这就说明我们要改的AL32UTF8字符集并不是ZHS16GBK的超集。

2K60

字符集与字符编码的区别与演进(ASCII、GBK、UNICODE)

1.2 单字节编码:ASCII扩展OEM字符集 对于ASCII的第一次扩展:OEM(IBM PC)字符集,实际上就是使用了ASCII后面的128个位置,还是单字节字符集。...可以理解为标准是一套字符集的集合,根据本地化的规则选择使用哪个字符集。...2.1 ANSI 与字符集不同,另一个维度的概念是字符集标准:由于不同的地区定义了大量不同的字符集,就拿单字节编码的字符集来说,就有ASCII、latin等等,虽然前128个字符一样,但后128个字符就完全不同了...3 大统一 字符集、标准种类繁多,但是无论使用哪一种字符集,都无法做到显示任意国家的字符,所以unicode字符集出现了。...字符集:字符和字符码的映射关系,例如在ASCII中a的字符码就是97,表示在字符集的97号位置上是字符’a’。

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一个故事带你搞懂ASCII,Unicode字符集和UTF-8编码

    我们常常见到的ASCII码又是什么?Unicode字符集又是什么?它们之间有着什么样的关系呢?要搞清楚这些问题就得弄清楚字符的编码方式和各种常用的字符集。...希望大家可以彻底搞懂相关的字符集和编码的故事 ---- 随便说说字符集和编码 快下班时,爱问问题的小朋友Nico又问了一个问题: "sqlserver里面有char和nchar,那个n据说是指...从128到255这一页的字符集被称"扩展字符集"。从此之后,贪婪的人类再没有新的状态可以用了,美帝国主义可能没有想到还有第三世界国家的人们也希望可以用到计算机吧!...后来还是不够用,于是干脆不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容。...从前多种字符集存在时,那些做多语言软件的公司遇上过很大麻烦,他们为了在不同的国家销售同一套软件,就不得不在区域化软件时也加持那个双字节字符集咒语,不仅要处处小心不要搞错,还要把软件中的文字在不同的字符集中转来转去

    80230

    【Oracle字符集】识别及转换导出文件的字符集

    在传统的EXP导出文件中,记录着导出使用的字符集id,通过查看导出文件头的第2、3个字节,我们可以找到十六进制表示的字符集ID,在Windows上,可以使用UltraEdit等工具打开dmp文件,查看其导出字符集...在文件开始部分就记录了数据库的字符集、国家字符集及时区等信息,在表字段的属性部分也记录了字符集ID: ?...最常见的转换发生在从US7ASCII到ZHS16GBK之间。 由于很多数据库最初以US7ASCII字符集存储中文,单纯通过导出导入是无法完成字符集转换的。...对于这种情况,可以通过设置导出字符集为US7ASCII,原样导出数据;导出后修改导出文件的第二、三字符,修改0001为0354,这样就可以将US7ASCII字符集的数据正确导入到ZHS16GBK的数据库中...如果导出文件使用的字符集是US7ASCII,目标数据库的字符集是ZHS16GBK,就可以使用create database的方法来修改,具体操作如下: ? ?

    3.7K40

    字符集(charset)的演进

    字符是各种文字和符号的总称,包括各个国家文字,标点符号,图形符号,数字等。字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数各不相同。...下面为几项常见字符集及其区别 1.GB2312(GB就是国标的意思):GB2312包含简体中文 2.BIG5(又称大五码或五大码):它包含繁体中文,是港澳台等适用的 3.GBK(国标扩):GBK包含全体中文字符...,它是GB2312的扩展,它加入了对繁体字的支持,并且兼容GB2312,也就是它包含简体、繁体中文。...4.UTF-8(万国码):UTF-8是目前最常用的字符集,它包含了全世界所有国家需要用的字符(如英文,韩文,日文,阿拉伯文等)。...所以我们都统一用UTF-8,这样就可以避免字符集不统一而出现的页面乱码现象啦 当然现在还有UTF-16和UTF-32,都是通用的万国码,具体区别下期再讲哦

    52420

    字符集问题的初步探讨(七)----关于字符集更改的内部操作

    我们又知道,通过ALTER DATABASE CHARACTER SET更改字符集虽然安全可靠,但是有严格的子集和超集的约束,实际上我们很少能够 用到这种方法。...实际上Oracle还存在另外一种更改字符集的方式....Oracle非公开的命令: 这个命令是当你选择了使用典型方式创建了种子数据库以后,Oracle会根据你选择的字符集设置,把当前种子数据库的字符集更改为期望字符 集,这就是这条命令的作用....在使用这个命令时,Oracle会跳过所有子集及超集的检查,在任意字符集之间进行强制转换,所以,使用这个命令时你必须十分小心,你必须 清楚这一操作会带来的风险....,也就是说INTERNAL_USE提供的帮助就是使 Oracle数据库绕过了子集与超集的校验.

    84520

    指定输出的字符集

    指定输出的字符集若要指定要在输出文档中使用的字符集,可以设置Writer实例的Charset属性。选项包括“UTF-8”、“UTF-16”以及InterSystems IRIS支持的其他字符集。...Writing the PrologXML文件的序言(根元素之前的部分)可以包含文档类型声明、处理指令和注释。...影响Prolog的属性在writer实例中,以下属性会影响prolog:Charset控制两件事:XML声明中的字符集声明和(相应的)输出中使用的字符集编码。...如果没有指定字符集,并且输出定向到字符串或字符流,则默认为1,并且不写入任何声明。生成文档类型声明在根元素之前,可以包含文档类型声明,该声明声明了文档中使用的模式。...这是必需的,而且必须是有效的XML标识符。 还必须将此名称用作本文档中根级别元素的名称。

    1.2K10

    循序渐进Oracle:数据库的字符集和字符集文件

    3.1 字符集的基本知识 如果从头说起,字符集最早的编码方案来自于与ASCII,这也是最常见的编码方式。...但是,ZHS16GBK并非是ZHS16CGB231280的严格超集(虽然后者的汉字在前者中都存在,但是同样的编码在不同两个字符集中可能表达不同的汉字),所以在做数据库字符转换时仍然需要特别注意。...这时转换仅发生在insert数据到UTF8的数据库中。 以上假设的转换只在目标数据库字符集是源数据库字符集的超集时才能转换。如果不同,一般就需要进行一些特殊的处理。...(6)导入Session字符集应该是导出字符集的超集,否则,专有的字符将难以正确转换。...(7)当数据转换为导入Session字符集设置以后,如果导入Session字符集仍然不同于目标数据库字符集,那么数据在插入数据库之前还需要进行最后一步转换,这要求目标数据库字符集是导入session字符集的超集

    1.7K40

    MySQL选择合适的字符集

    对数据库来说,字符集更加重要,因为数据库存储的数据大部分都是各种文字,字符集对数据库的存储,处理性能,以及日后系统的移植,推广都会有影响。...满足应用支持语言的需求,如果应用要处理各种各样的文字,或者将发布到使用不同语言的国家或地区,就应该选择Unicode字符集。...假如已有数据是GBK文字,如果选择GB2312-80为数据库字符集,就很有可能出现某些文字无法正确导入的问题 如果数据库只支持一般中文,数据量很大,性能要求也很高,那就应该选择双字节长编码的中文字符集,...如果数据库需要做大量的字符运算,如比较,排序等,那么选择定长字符集可能更好,因为定长字符集的处理速度要比变长字符集的处理速度快。...如果所有客户端程序都支持相同的字符集,则应该优先选择该字符集作为数据库字符集,这样可以避免因字符集转换带来的性能开销和数据损失。

    2.2K20

    关于GreatSQL字符集的总结

    下面介绍一些重要的字符集。 1. ASCII字符集 共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。...ASCII字符集总共128个字符,可以使用1个字节来进行编码。 2. ISO8859-1字符集 共收录256个字符,是在ASCII字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母)。...这种字符集同时兼容ASCII字符集,所以如果字符在ASCII字符集中则采用1字节编码,否则采用2字节编码。 4. GBK字符集 GBK对GB2312字符集进行了扩充,编码方式兼容GB2312字符集。...注意一点如果指定character set而不指定 collate,则collate会取指定字符集的default collation,而不是collation_server指定的校验规则。...而不是数据库的校验规则。

    10310

    关于GreatSQL字符集的总结

    下面介绍一些重要的字符集。 1. ASCII字符集 共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。...ASCII字符集总共128个字符,可以使用1个字节来进行编码。 2. ISO8859-1字符集 共收录256个字符,是在ASCII字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母)。...这种字符集同时兼容ASCII字符集,所以如果字符在ASCII字符集中则采用1字节编码,否则采用2字节编码。 4. GBK字符集 GBK对GB2312字符集进行了扩充,编码方式兼容GB2312字符集。...注意一点如果指定character set而不指定 collate,则collate会取指定字符集的default collation,而不是collation_server指定的校验规则。...而不是数据库的校验规则。

    19210

    不可忽视的MySQL字符集

    墨墨导读:字符集是一组符号和编码。collation是一组用于比较字符集中的字符的规则。 MySQL的字符集从latin1经过utf8 到utf8mb4 ,算是经历曲折的路线。...特别是从使用一个字符集变更另一个字符集时,实践当中都非常无奈,不是没办法,而是麻烦。到了MySQL8.0多出了一个字符集utf8mb4_0900_*的字符集,有必要了解一下。 1....都可以完全的拥有自己的字符集。...字符集不再是隐藏问题。 3. 字符集对于数据库的影响 字符集对整个数据库影响面还是比较可观的。库更改 对于原先存在的表字段 都不影响 依次类推。所以数据库>表>字段 都可以单独设置字符集。...For example, ‘a’ and 'a ’ 作为不同的字符串比较,而不是相同的字符串。 ? 对于字符集排序来说,字符串末尾的空格也有对应的处理。

    2.1K20

    【字符编码那些事】ASCII、GB2312、GBK、UTF-8编码以及Unicode字符集

    这种使用8位二进制来表示或存储字符的过程就叫做编码(一串二进制01和一个字符一一对应的过程)。这些用ASCII码表示的字符的集合叫做ASCII字符集。...GB2312标准 GB2312总共覆盖了6763个常用汉字,GB2312标准把ASCII码表127号之后的扩展字符集去掉,并规定,小于127(0x7F)的编码按照ASCII标准进行解码,当出现连续两个大于...四、Unicode字符集 每个国家和地区都有一套自己的文字,不同的文字系统就要使用不同的编码标准,这就出现这样一个问题,同一个二进制编码在不同的编码标准中可能代表了不同的字符,比如0xB0A1,在GBK...编码标准中为“啊”,而在Big5编码标准中就不是这个字了。...而Unicode字符集在0xD800~0xDBFF区间内的编号不表示任何字符,UTF-16用这段编号与Unicode字符集中大于0xFFFF的字符编号进行映射,得到扩展的4字节编码。

    1.8K10

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

    导出使用的字符集将会记录在导出文件中,当文件导入时,将会检查导出时使用的字符集设置,如果这个字符集不同于导入客户端的NLS_LANG 设置,字符集将根据导入客户端NLS_LANG设置进行转换,如果必要,...2.源数据库和目标数据库字符集不同 如果我们导出时候使用的NLS_LANG是和源数据库相同的字符集,那么导入时就可以设置客户端NLS_LANG等于导出时使用的字符集,这 样转换只发生在数据库端,而且只发生一次...以上假设的转换只在目标数据库字符集是源数据库字符集的超集时才能转换。如果不同,一般就需要进行一些特殊的处理。...我们简单看一下导入的转换过程(以Oracle8i为例): 1.确定导出数据库字符集环境 通过读取导出文件头,可以获得导出文件的字符集设置 2.确定导入session的字符集,即导入Session使用的NLS_LANG...: E:/nls2>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 导入Session字符集设置为ZHS16GBK 导入US7ASCII的导出文件 E:/nls2>e:

    60030

    MySQL 的字符集与排序规则

    字符集 uft8 与 utf8mb4 其实指的是 MySQL 中的字符集,那到底什么是字符集呢? 概念 很多人常常会把字符、字符集、字符编码的概念混为一谈,今天我们仔细来看看。 何为字符?...是因为字符集并不简单的是字符的集合, 准确概述来说,字符集是一套符号和编码的规则。字符集需要以某种字符编码方式来表示、存储字符。我们知道,计算机内部,所有信息最终都是一个二进制值。...例如,我们所熟知的ASCII码表中,01000011这个二进制对应的十进制是67,它代表的就是英语字母C。准确概述来说,字符编码方式是用一个或多个字节的二进制形式表示字符集中的一个字符。...每种字符集都有自己特有的编码方式,因此同一个字符,在不同字符集的编码方式下,可能会产生不同的二进制形式。 既然我们经知道了 utf8 与 utf8mb4 都是一种字符集,那两种到底有什么区别呢?...utf8_general_ci 也适用于德语和法语,除了‘ß’等于‘s’,而不是‘ss’之外。如果你的应用能够接受这些,那么应该使用 utf8_general_ci,因为它速度快。

    2.4K20

    修改字符集的注意那些事儿

    一 前言 最近有开发同学遇到emoji显示问题,表结构是utf8mb4字符集,但是不支持emoji表情字符。我们在解决字符集问题的时候也重新认识了修改字符集操作的影响。...修改表的默认字符集只对表的新增字段有效,对老的字段无效,不会修改老的数据的字符集类型。 初始化表数据的时候 我们向字符集类型utf8的c1字段插入了emoji字符。查询出来是乱码。...2.2 修改表的字符集 ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4; convert to charset 关键字会转换表的默认字符集以及字段的字符集...三 总结 1.修改表的默认字符集,仅仅修改元数据,支持online ddl ,但是适应convert 转换表和字段的字符集的时候会锁表。 2.修改表的字符集和字段的字符集仅仅对新增数据有效。...使用alert table defult charset 模式修改字符集可能带来字段字符集和表字符集不一样的情况。

    70420
    领券