码迷,mamicode.com
首页 > 其他好文 > 详细

中文字符的存储

时间:2018-10-09 14:25:50      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:存储类型   比较   utf-8   utf8编码   文字   文字编码   ima   默认   常用   

主要分析下面内容

在数据库:oracle,mysql下,对字符集:gbk,utf-8的处理

Oracle

如果字符集为gbk,gb2312,Varchar类型的数据库字段长度/2为存储中文字符长度

GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。
GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。

UTF-8 Unicode Transformation Format-8bit。是用以解决国际上字符的一种多字节编码。

它对英文使用8位(即一个字节) ,平均中文使用24位(三个字节)来编码。

oracle中有三种比较常用的类型:varchar2(byte)、varchar2(char)、nvarchar2()。 

varchar2(byte):就是默认的表示方式,比如我们写成:varchar2(100),就相当于varchar2(100 byte),表示最大字节数是100,该字段最多能容纳100个字节,强调空间大小

varchar2(char):表示最大字符数是100,该字段最多能容纳100个字符,强调个数。假设我们写成varchar2(100 char),那么无论是数字、字母、汉字,都看成一个字符,最多写100个,当然,汉字越多,占用的空间越大例如:存入一个汉字,底层占2或3个字节,存入一个字母,占1个字节,绝对不是某些文章所说1个字母或数字也占2或3个字节!

 nvarchar2():没有byte、char之分,类似于varchar2(char),只不过nvarchar2()屏蔽了数据库编码,无论是何种编码,nvarchar2()中一个汉字都占两个字节。

无论是varchar2还是nvarchar2,最大字节数都是4000。

所以,对于GBK编码的数据库而言,安全的写法为:varchar2(2000 char)、nvarchar2(2000)

对于UTF8编码的数据库而言,安全的写法为:varchar2(1333 char)、nvarchar2(2000)。

varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;

varchar -- 存放定長的字符數據,最長2000個字符;
varchar2 -- 存放可變長字符數據,最大長度為4000字符。

--nvarchar,nvarchar2  联系: 1.nvarchar/nvarchar2用于存储可变长度的字符串 2.size 的最大值是 4000,而最小值是 1,其值表示字符的个数,而不是字节数 3.这两种类型更适合存储中文

区别:

1.nvarchar中字符为中文则一般按2个字节计算,英文数字等按照一个计算

2.nvarchar2中所有字符均按照2个字节计算;

3.nvarchar2虽然更占空间,但是它有更好的兼容性,所有推荐使用;

Mysql

Gbk与utf-8下,字符集Varchar,char是不区分中英文字符

小知识

 

Oracle 查看字符存储类型

select userenv(‘language‘) from dual;

AMERICAN_AMERICA.ZHS16GBK

字符与字节的说明

 技术分享图片

 

中文字符的存储

标签:存储类型   比较   utf-8   utf8编码   文字   文字编码   ima   默认   常用   

原文地址:https://www.cnblogs.com/interfaceone/p/9759972.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!