主要分析下面内容

在数据库: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

字符与字节的说明

中文字符存储 mysql_中文字符的存储相关推荐

  1. 【Java基础】Java中的char是否可以存储一个中文字符之理解字符字节以及编码集

    Java中的一个char采用的是Unicode编码集,占用两个字节,而一个中文字符也是两个字节,因此Java中的char是可以表示一个中文字符的. 但是在C/C++中由于采用的字符编码集是ASCII, ...

  2. Java的char数据类型存储一个中文字符

    对于Java语法以及JVM框架,实际上是用之,而不是先掌握,所以对一些基础性概念总是存在偏颇认识. 比如对于这个char类型来说,一直以为是一个字节的变量,那自然不能存储一个中文字符(2个字节),这是 ...

  3. Java的编码方式、单个char类型存储大部分中文字符、getBytes()、new String()的转换流程

    目录 一 编码种类 1.1 ASCII码 1.2 ISO8859-1编码 1.3 GBK编码 1.4 Unicode字符集 1.4.1 UTF-8编码 1.4.2 UTF-16编码 1.4.3 UTF ...

  4. mysql中char存储中文_数据库中的字符类型存储字符和汉字的数量

    sqlServer2012(936 简体中文GBK )为例: 例如: varchar(10),只能存储10个英文字符或数字,也只能存储5个汉字: char(10),只能存储10个英文字符或数字,也只能 ...

  5. 关于字符编码,中文所占字节的整理。

    1个字节byte=8bit(比特/位)  1bit=0.125B字节 1个汉字两个字节 16bit,2B. 字符:汉字,数字,字母等 Byte,bit是存储单位 Bit--比特 B --字节  KB- ...

  6. mysql截取中文字符_mysql 截取中文字符

    1.char(n)类型     char类型时定长的类型,即当定义的是char(10),输入的是"abc"这三个字符时,它们占的空间一样是10个字节,包括7个空字节.当输入的字符长 ...

  7. java printstream 中文乱码_JAVA的中文字符乱码问题

    JAVA的中文字符乱码问题一直很让人头疼.特别是在WEB应用中.网上的分析文章和解决方案都很多,但总是针对某些特定情况的.很多次遇到乱码问题后, 经过极为辛苦的调试和搜索资料后终于解决,满以为自己已经 ...

  8. C语言中字符型在计算机中的存储

    一. 字符型的分类和表示范围 char:是有符号还是无符号数视编译器而定,一般为有符号数,下文把它全部当成有符号数进行讨论 表示范围:32位和64位机器上均是一个字节,所以是八个bit位,最高位为符号 ...

  9. php怎样弄成中文,php怎样替换中文字符

    [摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...

最新文章

  1. sql server 表索引碎片处理
  2. python 开发框架
  3. puppet自动化运维之puppet的资源基础知识
  4. cmake ubuntu安装卸载升级
  5. SQL Server2008附加数据库之后显示为只读时解决方法
  6. 【SSH网上商城项目实战20】在线支付平台的介绍
  7. git保护--git分支创建
  8. java中a 和 a_Java中a=a++ 和 a=++a(轉)
  9. 物联网平台之争 巨头竞合并存
  10. ai人工智能操控什么意思_为什么要建立AI分散式自治组织(AI DAO)
  11. Jpg格式图片如何缩小?怎么把jpg格式图片变小?
  12. 【学习笔记向】零基础小白快速制作最简陋MMD(VRoid + Unity)
  13. TIA PORTAL博途中进行网络组态时,拓扑视图要不要组态,有什么作用?
  14. r52500u学计算机,AMD锐龙R5 2500U性能评测 性能提升幅度让Intel八代酷睿汗颜
  15. 无脑安装教程:windows 10—QT5.9.5 + vs2013
  16. JavaScript高级编程--对象详解
  17. 聚类之高斯混合模型(Gaussian Mixture Model)
  18. 组合数的几种常规求法
  19. 【wechat】微信开发——自定义菜单
  20. 技术博客丨神经网络不再“卷” 全靠“变形金刚”

热门文章

  1. USACO 1.5 Prime Palindromes
  2. 追佛信道不如追求真理。。
  3. Free DOS 1.0发布!
  4. SpringSession+redis解决分布式session不一致性问题
  5. 1026. 节点与其祖先之间的最大差值
  6. 【毕业答辩】毕业论文答辩温馨提示
  7. 山东建筑大学计算机期末试题,2018年山东建筑大学计算机科学与技术学院900计算机专业综合之计算机操作系统考研基础五套测试题...
  8. php parse url 中文,php parse_url()函数解析URL用法总结
  9. idea tomcat项目部署失败_阿里云centons安装Jdk和tomcat,mysql以及项目部署(阿里云入门)...
  10. 个人计算机多核cpu好处,CPU是多核好还是高主频好?