精华内容
下载资源
问答
  • 编码字节长度计算
    千次阅读
    2021-05-03 05:25:03

    在php中常见的计算字符串长度的函数有:strlen和mb_strlen

    比较strlen和mb_strlen

    1.strlen PHP内置的字符串长度函数

    2.mb_strlen 不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保"extension=php_mbstring.dll"这一行存在并且没有被注释掉

    当字符全是英文字符的时候,两者是一样的。关于中文的问题,PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在UTF-8编码下,一个汉字占3个字节)。

    mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和strlen类似,只不过它有第二个可选参数用于指定字符编码。

    例如得到UTF-8的字符串$str长度,可以用mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过mb_internal_encoding()函数得到

    代码如下:

    //编码方式UTF8

    $str='php教程网';

    echo strlen($str);

    echo '
    ';

    echo mb_strlen($str,'UTF8');

    //输出结果

    //12

    //6

    ?>

    更多相关内容
  • UTF-8 字符编码长度计算

    千次阅读 2022-01-04 16:50:58
    //utf8字符长度1-6,可以根据每个字符第一个字节判断整个字符长度: //0xxxxxxx {0x00 ~ 0x7F ASCII 占1个字节} //110xxxxx 10xxxxxx {0xC0 ~ 0xDF UTF-8 占2个字节} //1110xxxx 10xxxxxx 10xxxxxx

    //utf8字符长度1-6,可以根据每个字符第一个字节判断整个字符长度:
    //0xxxxxxx {0x00 ~ 0x7F ASCII 占1个字节}
    //110xxxxx 10xxxxxx {0xC0 ~ 0xDF UTF-8 占2个字节}
    //1110xxxx 10xxxxxx 10xxxxxx {0xE0 ~ 0xEF UTF-8 占3个字节}
    //11110xxx 10xxxxxx 10xxxxxx 10xxxxxx {0xF0 ~ 0xF7 UTF-8 占4个字节}
    //111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx {0xF8 ~ 0xFB UTF-8 占5个字节}
    //1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx {0xFC ~ 0xFD UTF-8 占6个字节}

    //如果一个字节,最高位(第 8 位)为 0,表示这是一个 ASCII 字符(00 - 7F)。可见,所有 ASCII 编码已经是 UTF-8 了。
    //如果一个字节,以 11 开头,连续的 1 的个数暗示这个字符的字节数,例如:110xxxxx 代表它是双字节 UTF-8 字符的首字节。
    //如果一个字节,以 10 开始,表示它不是首字节,需要向前查找才能得到当前字符的首字

    if (byte <= 0x7F) then ASCII 占用1个字节
    
    if (byte >= 0xC0 && byte <= 0xDF) then 首字节   UTF-8 占用2个字节
    
    if (byte >= 0xE0 && byte <= 0xEF) then 首字节   UTF-8 占用3个字节
    
    if (byte >= 0xF0 && byte <= 0xF7) then 首字节   UTF-8 占用4个字节
    
    if (byte >= 0xF8 && byte <= 0xFB) then 首字节   UTF-8 占用5个字节
    
    if (byte >= 0xFC && byte <= 0xFD) then 首字节   UTF-8 占用6个字节
    
    if (byte > 0x7F && byte < 0xC0 ) then UTF-8非首字节
    
    
    /*
     * @breif 	获取UTF-8 字符长度
     * @param	byte:1个字节数据
     * @return 	0:UTF-8 非首字节,大于0:UTF-8 字符字节数
    */
    uint8_t utf8_code_bytes(uint8_t byte)
    {
        int bytes = 0;
    
        if (byte <= 0x7F) { //then ASCII 占用1个字节
            bytes = 1;
        } else if (byte >= 0xC0 && byte <= 0xDF) {  // then 首字节   UTF-8 占用2个字节
            bytes = 2;
        } else if (byte >= 0xE0 && byte <= 0xEF) {  // then 首字节   UTF-8 占用3个字节
            bytes = 3;
        } else if (byte >= 0xF0 && byte <= 0xF7) {  // then 首字节   UTF-8 占用4个字节
            bytes = 4;
        } else if (byte >= 0xF8 && byte <= 0xFB) {  // then 首字节   UTF-8 占用5个字节
            bytes = 5;
        } else if (byte >= 0xFC && byte <= 0xFD) {  // then 首字节   UTF-8 占用6个字节
            bytes = 6;
        } else if (byte > 0x7F && byte < 0xC0 ) {   // then UTF-8   非首字节
            bytes = 0;
        }
    
        return bytes;
    }
    
    展开全文
  • 在PHP中,函数strlen()返回字符串的长度,strlen()函数返回字符串所占的字节长度,一个英文字母、数字、各种符号均占一个字节,它们的长度均为1
  • strlen()函数返回字符串所占的字节长度,一个英文字母、数字、各种符号均占一个字节,它们的长度均为1。一个中午字符占两个字节,所以一个中午字符长度是2。例如 复制代码 代码如下: <?php echo strlen(...
  • java中字符计算字节长度

    千次阅读 2021-11-01 17:02:31
    通常,计算字符长度大小方法很多,熟悉的有将字符串写入文件,然后读取文件大小即可。这种方式还是比较麻烦的。 1.方法一: 需要先拿到字符串===》然后再写入文件===》再读取文件===》统计文件字节长度===》...

    通常,计算字符串长度大小方法很多,熟悉的有将字符串写入文件,然后读取文件大小即可。这种方式还是比较麻烦的。

    1.方法一:

            需要先拿到字符串===》然后再写入文件===》再读取文件===》统计文件字节流长度===》可以拿到字符串的字节大小

    2.方法二:

            //编码格式有 UTF-8 GB2312 GBK UTF-16 UTF-32
            try {
                int length = "测试不同编码格式的字节长度".getBytes("编码格式").length;
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

           通过String的getBytes()方法去统计它的length,这样是最方便的,但是有个不好之处就是设置编码格式,这个还是有很大影响的,采用那种编码格式计算计算出来的字节长度不一样,所以这个比较重要。

     

           能想到的比较好的方法,就是将编码格式设置在配置文件中,这样不影响字符串的字节长度计算,也比较灵活,采用那种编码格式,就设置成什么的,后期好维护。

    3.代码中运用

     

     

    展开全文
  • 编码格式 和 长度计算

    千次阅读 2018-08-13 18:28:47
    字符串的结束符 在C语言中没有专门的字符串变量,通常用...有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。   Unicode编码 Unicode码内容:它前128个字符就是ASCII码,之后是扩展码。 ASC...

    》字符串的结束符

    在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符 '\0'存入数组,并以此作为该字符串是否结束的标志。有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

     

    Unicode编码

    Unicode码内容:它前128个字符就是ASCII码,之后是扩展码。

    ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。

     

    编号从0开始的32种状态分别规定了特殊的用途,终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。于是就把这些0x20以下的字节状态称为"控制码"。

     

    GBK编码

    》GBK编码,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年10月制定, 1995年12月正式发布,目前中文版的WIN95、WIN98、WINDOWS NT以及WINDOWS 2000、WINDOWS XP、WIN 7等都支持GBK编码方案。

    》字符有一字节和双字节编码,00–7F范围内是一位,和ASCII保持一致,此范围内严格上说有96个字符和32个控制符号。

    00-7F属于ASCII编码, 8140-FEFE才属于GBK编码, GBK编码支持与ASCII编码混编. 字符串中, 英文与数字字符属于ASCII编码, 故占用一个字节, 中文字符属于GBK编码, 故占用两个字节。实际是GBK字符集里也有英文与数字字符, 但属于全角字符, 占用两字节,看使用者用的是半角的还是全角的。

     

     

    UTF-8编码

    UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

    占2个字节的:带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二个字节编码

    占3个字节的:基本等同于GBK,含21000多个汉字

    占4个字节的:中日韩超大字符集里面的汉字,有5万多个,通常汉字占三个字节,扩展B区以后的汉字占四个字节。

    一个utf8数字占1个字节

    一个utf8英文字母占1个字节

    少数是汉字每个占用3个字节,多数占用4个字节。

    UTF-8采用如下所示的二进制方式来表示31位UCS-4,X表示有效位:

    1字节 0XXXXXXX

    2字节 110XXXXX 10XXXXXX

    3字节 1110XXXX 10XXXXXX 10XXXXXX

    4字节 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

    5字节 111110XX 10XXXXXX 10XXXXXX 10XXXXXX 10XXXXXX

    6字节 1111110X 10XXXXXX 10XXXXXX 10XXXXXX 10XXXXXX 10XXXXXX

    从上可以看得出,如果处在第一字节的引导字节最高位为0,则是一字节。否则看前导1的个数,来确定是几个字节长。前导1与有效位之间有0相隔,也可以通过首字节的值范围来确定字节数。

    1字节 0  ~127

    2字节 192~223

    3字节 224~239

    4字节 240~247

    5字节 248~251

    6字节 252~253

    随后的字节每个都以10为前导位,取值范围则在128~191之间。可以立即得知一个字节是否为后续字节,因为引导字节的引导位不是00、01就是11,不会是10。

     

     

     

     

    展开全文
  • Base64编码长度计算

    千次阅读 2021-07-25 11:56:29
    Base64的编码都是按字符长度,以每3个8bit的字符为一组, 然后针对每组,首先获取每个字符的ASCII编码,然后把ASCII编码转换成8bit二进制,得到24bit; 再把这24bit每六个划分,高位用0补齐,得到4个8bit的字节, ...
  • Base64如何编码长度计算公式. Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),数据不足3字节,用0补足; 因为6位二进制数可以表示64个不同的数,因此只要确定了字符集(含64个字符),并...
  • 获取汇编指令的编码字节长度

    千次阅读 2021-01-28 16:51:28
    皓哥笔直的背影,就是我前进的方向。(——想说这句话真的好久了) 最近在皓哥的激励下也在慢慢啃CSAPP,今天看到第三章程序的机器级表示,里面... 比较同样一个操作的两种不同实现的编码字节长度 前两问都比较简单,
  • /* 统一按照GBK格式计算字符长度 */ int astrlen_gbk(const char *str) { const char *p_ch = NULL; int len = 0; int byte = 0; if (!str) return 0; p_ch = str; while (*p_ch) { if (*p_ch & 0x80) { char ...
  • 采用UTF-8编码,Unicode代码点中U+007F以下(包含U+007F)的字符用一个字节编码,其它的字符用多个字节编码,最多一个字符用4个字节编码。这样UTF-8兼容ASCII,但是不兼容ISO-Latin字符集。 Unicode字符采用UTF-8...
  • 解码是一个反向操作过程,即将一个编码字节序列转换为一组 Unicode 字符。Unicode 标准为所有支持脚本中的每个字符分配一个码位(一个数字)。Unicode 转换格式 (UTF) 是一种码位编码方式。Unicode 标准 3.2 版使用...
  • 英文字母和中文汉字在不同字符编码下的字节数英文字母:字节数 : 1;编码:GB2312字节数 : 1;编码:GBK字节数 : 1;编码:GB18030字节数 : 1;编码:ISO-8859-1字节数 : 1;编码:UTF-8字节数 : 4;编码:UTF-16字节数 ...
  • [size=large][color=blue]想在页面上计算字节长度,因为太长后面就不能插入数据库了,所以特别纠结,咋样限制用户的...[size=large][b][color=red]关键字:怎么用js,javascript 计算UTF-8编码字符串占用的字节长度...
  • 下面简要的剖析一下PHP对中文字符长度的处理: PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符长度的,一个英文字符占1字节。例: $enStr = ‘Hello,China!’; echo strlen($...
  • 1.转成string类型数据 2.通过getBytes(字符集).length获取字节长度,除于1024为多少kb,再除于1024为多少mb
  • (一)“字节”的定义 字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。 ...(二)“字符”的定义 ...字符是指计算机中使用的文字和符号,...不同编码里,字符和字
  • 通过Base64编码长度计算文件大小

    千次阅读 2021-02-20 10:31:00
    前言 在一些业务场景下,我们会将文件或图片转化为Base64编码进制传输,而业务中有需要对文件的大小进行限制,如何在不进行解码的...如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本...
  • 哈夫曼编码长度计算问题

    万次阅读 2018-01-02 13:55:20
    问题是: 已知某字符串S中共有8种字符,各种字符分别出现2次、1次、4次、5次、7次...也就是2×5+1×5+4×3+5×3+7×2+3×4+4×3+9×2=98,所以该字符串的编码长度至少是98位。 这个就是带权路径长度,因为出现的次数
  • UTF编码字符串的总字节计算

    千次阅读 2016-11-09 16:52:45
    UTF编码字符串的总字节计算
  • 开发过程需要校验前台输入的字符串长度,以保证传到后台的字符串长度不超过数据库字段的...// UTF8字符集实际长度计算 function getStrLeng(str){ var realLength = 0; var len = str.length; var charCode = -...
  • String.charCodeAt(index) 返回指定索引位置的字符编码;String.charAt(index) 返回指定索引位置的字符
  • Java计算base64编码后的长度

    千次阅读 2020-11-25 17:38:55
    看了太多计算的方式,也验证了下,这里个人总结一下,此处主要针对 java.util.Base64 来总结一下: 方式一: Base64.getMimeEncoder().encode(readBuf) Base64类中源码方法如下: /** * Returns a {@link ...
  • 1.在开始之前先简单介绍下字符字节的区别: - 字符 人们使用的记号,抽象意义上的一个符号。一个汉字和英文就是一个字符,如'1', '中', 'a', '$', '¥',…… - 字节 计算机中存储数据的单元,一个8位的二进制...
  • 计算ansi unicode utf8等多种编码字符长度
  • go字符串是不可改变的,不能用s[i]的方式直接进行字符串的修改。 所谓的字符串修改其实不是对字符串本身修改,而是复制字符串,同时修改值,即重新分配内存。 可以将字符串转化为[]byte或者[]rune进行修改后,重新...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 259,218
精华内容 103,687
关键字:

编码字节长度计算