精华内容
下载资源
问答
  • 以解决国际上字符种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在...

    参考文献:http://csumissu.iteye.com/blog/1090053

    UTF-8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。

     

    GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。

     

    GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
    GBK、GB2312--Unicode--UTF8

     


    UTF8--Unicode--GBK、GB2312

     

     

    对于一个网站、论坛来说,如果英文字符较多,则建议使用UTF-8节省空间。不过现在很多论坛的插件一般只支持GBK。

    GB2312是GBK的子集,GBK是GB18030的子集
    GBK是包括中日韩字符的大字符集合
    如果是中文的网站 推荐GB2312 GBK有时还是有点问题
    为了避免所有乱码问题,应该采用UTF-8,将来要支持国际化也非常方便
    UTF-8可以看作是大字符集,它包含了大部分文字的编码。
    使用UTF-8的一个好处是其他地区的用户(如香港台湾)无需安装简体中文支持就能正常观看你的文字而不会出现乱码。

     

    gb2312是简体中文的码
    gbk支持简体中文及繁体中文
    big5支持繁体中文
    utf-8支持几乎所有字符

     

     

    MySQL 5.0以上的版本:

    1.一个汉字占多少长度与编码有关:

    UTF-8:一个汉字=3个字节

    GBK:一个汉字=2个字节

     

    2.varchar(n)表示n个字符,无论汉字和英文,Mysql都能存入n个字符,仅是实际字节长度有所区别

     

    3.MySQL检查长度,可用SQL语言:

    select LENGTH(fieldname) from tablename 来查看

    转载于:https://www.cnblogs.com/942267027wzmblog/p/5629388.html

    展开全文
  •  Mysql 5.0后,英文字符固定都是一个字节,汉字字符根据编码方式占不同字节,Utf-8占3个字节,gbk占了2个字节。  第,当编码方式为utf-8时,varchar存到21845就存不下了.也就是最大长度是21844.根据上面信息可以...

    utf8编码的varchar

      Mysql记录行数据是有限的。大小为64k,即65535个字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,大于255的2字节。
      Mysql 5.0后,英文字符固定都是一个字节,汉字字符根据编码方式占不同字节,Utf-8占3个字节,gbk占了2个字节。
      第一,当编码方式为utf-8时,varchar存到21845就存不下了.也就是最大长度是21844.根据上面信息可以推算出 ( 65535-2 )/3=21844余1
      例子如下:
      aaa

       aaa

    GBK编码的varchar

      当编码格式为GBK时,varchar能存多少字符呢?经过推理可知大约能存32766个字符,(65535-2)/2=32766余1。
      那么看看实验结果如下:
     aaa

       aaa

    为何提出这个问题?

      前段时间一个哥们提bug,要把备注等字段全部最大大小设置为1000,甚至更多,这个表的字段本身就已经很多了,而我们设计表时一般都默认使用utf8这个编码格式,那么一个汉字就占了3个字节,故一个行记录的长度就会短了些,数据占用存储资源也会多了些,然后修改的时候成功的报了row size too large的这个错误。这里提出来也是为了让大家注意下。

    总结

      设计表的时候不同的编码格式会导致varchar的最大值发生变化,varchar(数值),这个数值指的是字符数,也可以说是一个字,但是不是字节,当然存储的数据还是一个英文占一个字节,一个汉字根据编码格式占不同字节。varchar(255)需要一个自己记录字段的长度 ,256以上需要两个字节记录长度。

    VARCHAR的长度标识位

    长度标识位是相对比较复杂的,网上的介绍错的很多,也容易算错。

    其作用是记录数据的字节数

    存储开销是小于255只要1字节、大于255后使用两字节。是因为按照可能的数据大小,分为0 - 255(28)、256 - 65535(216),刚好对应1字节和2字节。

    但要注意,其计算根据的是字段声明的字符长度、计算可能的字节数,再决定长度标志的字节数。如VARCHAR(100),字符集为UTF8,可能的字节数为300,长度标识则为2字节。这是网上介绍错的最多的。

    另外长度标志位只是存储开销,不影响占用声明的字符长度。声明的字符长度的是数据的字符数,允许的最大字符数与字符集有关。

    VARCHAR(1)为例,可以存1个字符,MySQL会额外找一个字节存放长度标识

    https://learn.blog.csdn.net/article/details/103341778 

    展开全文
  • 判断字符串里有几个汉字 hdu 2030

    千次阅读 2018-12-21 00:53:46
    但是现在知道了一个比较简单的思路…那就是 首先,汉字的ascll码存储时占2个字节,而英文字符占1个, 汉字的ascll码是由两个负数组成的 也就是说,你只要把循环变量每次加2去遍历数组,找到某个数组元素的ascll值为...

    最开始也在网上搜了一下,发现好多讲了内部编码,用>>什么的,我自己用>>还没搞懂。
    但是现在知道了一个比较简单的思路…那就是 首先,汉字的ascll码存储时占2个字节,而英文字符占1个, 汉字的ascll码是由两个负数组成的
    也就是说,你只要把循环变量每次加2去遍历数组,找到某个数组元素的ascll值为负,代表这里有一个汉字。
    以下为acm 2030 代码

    #include <stdio.h>
    #include <stdlib.h>
    #include<string.h>
    int main()
    {
        int n,i,j,count;
        char a[100]scanf("%d",&n);
        getchar();
        for(i=0;i<n;i++){
            gets(a);
            count=0;
            int len=strlen(a);
            for(j=0;j<len;j+=2){
                if(a[j]<0) count++;
            }
            printf("%d\n",count);
            memset(a,0,sizeof(a));
        }
     return 0;
    }
    

    当然,如果有兴趣的话去了解一下具体原理更好


    2020.2.26更新:
    最近在学习计算机组成原理,里面讲到了字符编码,然后又想到这个之前留的坑,特地来完善一下。

    汉字内码是用于汉字信息的存储、交换、检索 等操作的机内代码,一般采用两个字节表示。
    汉字可以通过不同的输入法输入,但其内码在计算机中是唯一的。 英文字符的机内代码是七位的ASCII码,当用一 个字节表示时,最高位为“0”。
    为了与英文字 符能相互区别,汉字机内代码中两个字节的最 高位均规定为“1";

    我们知道最高位是符号位,0代表正数,1代表负数,这就解释了前面为什么每两个字节扫描一下,为负即代表为汉字的原因。如果是英文字符那么显然是正的。

    展开全文
  • ASCII编码:用来表示英文,它使用1个字节表示,其中第位规定为0,其他7位存储数据,一共可以表示128个字符。 拓展ASCII编码:用于表示更多的欧洲文字,8个位存储数据,一共可以表示256个字符 GBK/GB2312/GB18030...

    ASCII编码:用来表示英文,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。

    拓展ASCII编码:用于表示更多的欧洲文字,用8个位存储数据,一共可以表示256个字符

    GBK/GB2312/GB18030:表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。

    Unicode编码:包含世界上所有的字符,是一个字符集。

    UTF-8:是Unicode字符的实现方式之一,它使用1-4个字符表示一个符号,根据不同的符号而变化字节长度。

    展开全文
  • char 只能处理 ASCII 编码中的英文字符,是因为 char 类型太短,只有一个字节,容纳不下万个汉字,要想处理中文字符,必须得使用更长的数据类型。 一个字符在存储之前会转换成它在字符集中的编号,而这样的编号是...
  • ascci码由美国人发明,1个字节(byte)存储英文字符,前期了128个,后来新加了其他欧洲国家的符号,128~255这段。256个字符,基本上就是键盘上的所有字符。 2、unicode 2个byte,65535。因为后来发现还有...
  • 为什么要写这部分笔记呢?因为生活在大中华地区,编程过程中铁定会遇上’中文’字符串,而存储跟...1)在计算机中8个比特(bit)作为一个字节byte,1个byte能表示的最大整数位255; 2)英文字母需用1个byte,AS...
  • 种常见的编码方式

    2019-10-02 13:07:57
    ASCII编码:用来表示英文,它使用1个字节表示,其中第位规定为0,其他7位存储数据,一共可以表示128个字符。 拓展ASCII编码:用于表示更多的欧洲文字,8个位存储数据,一共可以表示256个字符 GBK/GB2312/GB...
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar...3.VARCHAR2字符用几个字节存储,要看数据库使用的字符集,4.大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 VARCHAR2字符要用几个字节...
  • oracle

    2018-09-17 16:45:54
    区别点: varchar只对汉字和全角等字符占两字节,数字,英文字符等都是个字节。... varchar2把所有字符都占两字节处理(一般情况下),并且字符要用几个字节存储,要看数据库使用的字符集。 ...
  • 1、varchar2把所有字符都占两字节处理(一般情况下) ...4、VARCHAR2字符用几个字节存储,要看数据库使用的字符集, 1.nvarchar中字符为中文则一般按2个字节计算,英文数字等按照一个自己计算 2.nvarchar
  • 、varchar和varchar2之间的区别 1、在一般情况下,varchar2把所有字符都占两字节处理...3、varchar2字符用几个字节存储,要看数据库使用的字符集,比如GBK,汉字就会占两个字节,英文1个如果是UTF-8,汉字一般占...
  • varchar和varchar2的区别

    2020-08-27 19:23:26
    1.varchar2把所有字符都占两字节处理,varchar只对汉字和全角等字符占两字节,数字,...3.VARCHAR2字符用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 ...
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是个字节; 2.VARCHAR2把空串等同于null...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,
  • varchar2和varchar的区别

    千次阅读 2019-06-14 17:14:31
    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性 ...
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是个字节; 2.VARCHAR2把空串等同于...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,...
  • oracle 关于char、varchar、varchar2 1、varchar2 把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角...3、varchar2 字符用几个字节存储,要看数据库使用的字符集; 4、大部分情况下建议适用varchar
  • varchar2与varchar区别

    2019-05-29 15:49:44
    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符...3.VARCHAR2字符用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 ...
  • varchar2把所有字符都占两字节处理(一般情况下),并且字符用几个字节存储,要看数据库使用的字符集。 varchar和varchar2的区别 varchar是标准sql里面的。 varchar2是oracle提供的独有的数据类型。 varch...
  • varchar varchar2区别

    2018-12-28 15:15:38
    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两...3.VARCHAR2字符用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 ...
  • Oracle摘记

    2012-02-11 22:49:49
    VARCHAR与VARCHAR2 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和...3.VARCHAR2字符用几个字节存储,要看数据库使用的字符集,   存储过程和函数 存储过程: Create [ or re...
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。
  • 1.varchar2把所有字符都占两字节处理(一般情况下),...3.VARCHAR2字符用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 varchar 存放的字符数据最长2000。 v...
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两...3.VARCHAR2字符用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性搜索。
  • varchar2 和varchar区别

    2017-08-16 14:04:00
    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符用几个字节存储,要看数据库使用的字符集,大部分情况下建议使用varchar2类型,可以保证更好的兼容性。...
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。

空空如也

空空如也

1 2 3 4 5 6
收藏数 108
精华内容 43
关键字:

一个英文字符用几个字节存储