精华内容
下载资源
问答
  • 怎么计算字符串的字节数
    2021-03-05 20:19:48

    不同的编码字节个数不一样的【以下列举常见三种编码形式】:

    GBK:一个汉字等于2字节,一个字母就等于1个字节,操作符等于1个字节。

    UTF-8:一个汉字等于3个字节,中文句号‘。’等于3个字节,一个字母等于1字节,英文的句号‘.’等于1个字节

    Unicode:一个汉字等于4个字节,都是等于2个字节【英语,数字,操作符[。,%,&]等的呢】

    public static void main(String[] args) {

    // 得到当前的系统属性

    String encoding = System.getProperty("file.encoding");

    System.out.println("当前编码:" + encoding);

    try {

    String str = "字符串abc";

    int len = str.getBytes().length;

    System.out.println("1.按操作系统默认编码来编码:" + len);

    len = str.getBytes("GBK").length;

    System.out.println("2.GBK编码的字节数:"+ len);

    len = str.getBytes("UTF-8").length;

    System.out.println("3.UTF-8编码的字节数:" + len);

    len = str.getBytes("Unicode").length;

    System.out.println("4.Unicode编码的字节数:" + len);

    /*

    * 当前编码:UTF-8

    * 1.按操作系统默认编码来编码:5

    * 2.GBK编码的字节数:4

    * 3.UTF-8编码的字节数:5

    * 4.Unicode编码的字节数:8

    */

    } catch ( java.io.UnsupportedEncodingException e) {

    System.out.println(e.getMessage().toString());

    }

    }

    更多相关内容
  • 本文主要给大家介绍了关于JS计算字符串所占字节数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 示例代码 /** * 计算字符串所占的内存字节数,默认使用UTF-8的编码方式计算,也...
  • JavaScript|计算字符串字节数

    千次阅读 2020-07-25 00:00:00
    问题描述 问题中提到计算字节数,首先需要对字节进行了解,Byte数是一个单位计量数值,其中字符串中单个的字符(英文、数字、特殊字符等)为一个字节,中文汉字是两个字节。 解决方案 1.正则表达式法 由于中英文...

    欢迎点击「算法与编程之美」↑关注我们!

    本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

    欢迎加入团队圈子!与作者面对面!直接点击!

    问题描述

    问题中提到计算字节数,首先需要对字节进行了解,Byte数是一个单位计量数值,其中字符串中单个的字符(英文、数字、特殊字符等)为一个字节,中文汉字是两个字节。

    解决方案

    1.正则表达式法

    由于中英文字符所占字节数不一样,但英文字符字节数和字符长度一致,因此,可以将一个中文字符替换为两个任意英文字符,便能直接用length计数。

    因为JS使用Unicode编码,因此,这里用[^\x0000-\x00ff]来匹配中文汉字字符(双字节字符)。

    代码如下:

    function getBytesLength(str) {

         return str.replace(/[^\x0000-\x00ff]/g, '我是xxx').length;

    }

    2.循环判断计数法

    这里依然需要用正则判断为中文字符或英文字符,英文字符计数累加1,中文字符计数累加2。

    需要用到JS中的函数:charAt(num) 获取字符串的num位置的字符。

    代码如下:

    var str='我是xxx';

    function BytesCount(str){

         var cnt = 0;

         for(var i=0; i<str.length; i++){

                  var c = str.charAt(i);

             if(/^[\u0000-\u00ff]$/.test(c)){

                            cnt++;

                  }else{

                            cnt+=2;

                  }

         }

         return len;

    }

    结语

    本例中在使用正则表达式时,使用的是匹配双字节字符的[^\x0000-\x00ff],其中也包含中文字符;而专门匹配中文字符的正则表达式是[\u4e00-\u9fa5]。

    END

    主  编   |   王楠岚

    责  编   |   wrape

     where2go 团队


       

    微信号:算法与编程之美          

    长按识别二维码关注我们!

    温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!

    展开全文
  • 包含特殊字符(例如?)的Java字符串在每个特殊字符中占用两个...如何正确计算字符串中的字节数?例:单词endere?o应该返回9而不是8。当我运行System.out.println("endereo".getBytes().length);时,它显示" 9"。@bri...

    包含特殊字符(例如?)的Java字符串在每个特殊字符中占用两个字节的大小,但是String length方法或使用从getBytes方法返回的字节数组获取其长度不会返回计数为两个字节的特殊字符。

    如何正确计算字符串中的字节数?

    例:

    单词endere?o应该返回9而不是8。

    当我运行System.out.println("endereo".getBytes().length);时,它显示" 9"。

    @briarheart哪个Java版本?在Java 7中,我得到了八分。

    @briarheart getBytes()使用平台默认编码,可能已经是UTF-8。请参阅:不同平台上的平台默认字符集?

    我正在使用Java8。我想" utf-8"是任何版本的Java的默认编码,除非显式覆盖此行为。

    定义特殊字符。是什么让您认为它需要两个字节的大小?哪里?您是指char[]中支持String的意思吗?单词endereo应该使我返回9而不是8。为什么?为什么不32?

    @briarheart UTF-8不是任何Java版本的默认编码。默认编码通常由操作系统定义,在Linux上通常为UTF-8,但在Windows上很少。

    长度在很大程度上取决于编码,例如对于endereo及其ISO-8859-1:8,UTF-8:9,EUC-JP:10,UTF-16BE:16,UTF-32:32

    @安德烈亚斯是的,你是对的。即使未指定,我也会看到值为" UTF-8"的" file.encoding"属性。" UTF-8"的显式后备仅存在于java.nio.charset.Charset类的代码中。

    我没有得到正确的长度,因为我的默认编码是ISO-8859-1。

    同样,定义长度。 String#length()方法具有非常具体的定义。

    究竟是哪个定义?

    所有Java字符串内部都使用两字节字符。

    The word endere?o should return me length 9 instead of 8.

    如果您希望长度为8个字符的"endere?o"字符串的大小为9个字节:7个ASCII字符和1个非ASCII字符,那么我想您要使用UTF-8字符集ASCII表中包含的字符为1个字节,其他字符为1个字节。

    but String length method or getting the length of it with the byte

    array returned from getBytes method doesn't return special chars

    counted as two bytes.

    String length()方法不能回答以下问题:使用了多少个字节?但是回答:"其中包含多少个" UTF-16代码单元"或更简单的char?"

    String length() Javadoc:

    Returns the length of this string. The length is equal to the number

    of Unicode code units in the string.

    没有参数的byte[] getBytes()方法将String编码为字节数组。您可以使用返回数组的length属性来了解编码的String使用了多少字节,但是结果将取决于编码期间使用的字符集。

    但是byte[] getBytes()方法不允许指定字符集:它使用平台的默认字符集。

    因此,如果底层操作系统默认情况下使用的字符集不是您要用来以字节编码字符串的字符集,则使用它可能无法获得预期的结果。

    此外,根据部署应用程序的平台,以字节为单位的字符串编码方式可能会发生变化。这可能是不希望的。

    最后,如果无法将字符串编码为默认字符集,则该行为未指定。

    因此,应非常谨慎地使用此方法,或者完全不要使用。

    byte[] getBytes() Javadoc:

    Encodes this String into a sequence of bytes using the platform's

    default charset, storing the result into a new byte array.

    The behavior of this method when this string cannot be encoded in the

    default charset is unspecified. The java.nio.charset.CharsetEncoder

    class should be used when more control over the encoding process is

    required.

    在您的String示例"endere?o"中,如果getBytes()返回一个大小为8而不是9的数组,则意味着您的操作系统默认不使用UTF-8,而是一个字符集使用1字节固定宽度的字符集,例如ISO 8859-1及其派生字符集(例如,基于Windows OS的windows-1252)。

    要了解运行该应用程序的当前Java虚拟机的默认字符集,可以使用以下实用程序方法:Charset defaultCharset = Charset.defaultCharset()。

    byte[] getBytes()方法带有另外两个非常有用的重载:

    byte[] java.lang.String.getBytes(String charsetName) throws UnsupportedEncodingException

    byte[] java.lang.String.getBytes(Charset charset)

    与没有参数的getBytes()方法相反,这些方法允许指定在字节编码期间使用的字符集。

    byte[] java.lang.String.getBytes(String charsetName) throws UnsupportedEncodingException Javadoc:

    Encodes this String into a sequence of bytes using the named charset,

    storing the result into a new byte array.

    The behavior of this method when this string cannot be encoded in the

    given charset is unspecified. The java.nio.charset.CharsetEncoder

    class should be used when more control over the encoding process is

    required.

    byte[] java.lang.String.getBytes(Charset charset) Javadoc:

    Encodes this String into a sequence of bytes using the given charset,

    storing the result into a new byte array.

    This method always replaces malformed-input and unmappable-character

    sequences with this charset's default replacement byte array. The

    java.nio.charset.CharsetEncoder class should be used when more control

    over the encoding process is required.

    您可以使用一个或另一个(虽然它们之间有一些复杂性)将您的String编码为带有UTF-8或任何其他字符集的字节数组,然后获取此特定字符集的大小。

    例如,要通过使用getBytes(String charsetName)获得UTF-8编码字节数组,可以执行以下操作:

    String yourString ="endere?o";

    byte[] bytes = yourString.getBytes("UTF-8");

    int sizeInBytes = bytes.length;

    并且您将获得9字节的长度,如您所愿。

    这是一个更全面的示例,其中显示了默认编码,使用默认字符集平台UTF-8和UTF-16的字节编码:

    public static void main(String[] args) throws UnsupportedEncodingException {

    // default charset

    Charset defaultCharset = Charset.defaultCharset();

    System.out.println("default charset =" + defaultCharset);

    // String sample

    String yourString ="endere?o";

    //  getBytes() with default platform encoding

    System.out.println("getBytes() with default charset, size =" + yourString.getBytes().length + System.lineSeparator());

    // getBytes() with specific charset UTF-8

    System.out.println("getBytes("UTF-8"), size =" + yourString.getBytes("UTF-8").length);

    System.out.println("getBytes(StandardCharsets.UTF_8), size =" + yourString.getBytes(StandardCharsets.UTF_8).length + System.lineSeparator());

    // getBytes() with specific charset UTF-16

    System.out.println("getBytes("UTF-16"), size =" + yourString.getBytes("UTF-16").length);

    System.out.println("getBytes(StandardCharsets.UTF_16), size =" + yourString.getBytes(StandardCharsets.UTF_16).length);

    }

    基于Windows操作系统的计算机上的输出:

    default charset = windows-1252

    getBytes() with default charset, size = 8

    getBytes("UTF-8"), size = 9

    getBytes(StandardCharsets.UTF_8), size = 9

    getBytes("UTF-16"), size = 18

    getBytes(StandardCharsets.UTF_16), size = 18

    "字符串length()方法不能回答以下问题:使用了多少个字节?但是回答:"包含多少个字符?"不,它返回字符串中UTF-16代码单元的数量。可以有多个代码 每个代码点的单位,每个"字素簇"可以有多个代码点(大多数用户会认为一个字符)。

    @plugwash从技术上讲,是的,您是正确的。 我想我太庸俗了。 我会更具体一些:"包含多少char?" 我更新了。 感谢您的相关评论:)

    展开全文
  • js获取字符串字节数

    千次阅读 2021-12-23 16:16:59
    js获取字符串字节数 注:str是字符串 //获取字符串的字节数 changeByte(str){ let count=0; if(str){ for(var i=0;i<str.length;i++){ if(str.charCodeAt(i)>255){ count+=2; }else{ count++; } } ...

    js获取字符串字节数

    注:str是字符串

    //获取字符串的字节数
        changeByte(str){
         let count=0;
         if(str){
         for(var i=0;i<str.length;i++){
            if(str.charCodeAt(i)>255){
                 count+=2;
            }else{
                count++;
            }
        }
         }
        return count;
        },
    
    展开全文
  • 在vb6.0中,经常会用到计算字符串中的单双字节字符个,可用于精确定位字符串显示位置、格式化文档中的字符串等。
  • 计算字符串字节数

    千次阅读 2017-05-05 11:19:08
    str.charCodeAt(index)返回字符串中字符的unicode编码 unicode大于255的是两个字节 小于等于255的是一个字节 UNICODE 是目前用来解决 ASCII 码 256 个字符限制问题的一种比较流行的解决方案。 大家知道,ASCII 字符...
  • 主要介绍了js获取字符串字节数方法,实例总结了javascript字符串长度计算的相关技巧,需要的朋友可以参考下
  • java中字符串计算字节长度

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

    千次阅读 2019-01-23 14:33:51
    JS计算字符串字节长度 String.prototype.byteLength = function() { var count = 0; for(var i=0,l=this.length;i<l;i++) { count += this.charCodeAt(i) <= 128 ? 1 : 2; } return count; } 附 : ...
  • 想办法在JavaScript中判断在UTF-8下存储的String的字节数,在网上找到很多关于Unicode介绍的文档,最重要的是字符编码数值对应的存储长度
  • C# 获取字符串字节数

    千次阅读 2017-05-22 17:59:20
    用System.Text.Encoding.Default.GetByteCount()获取字节数:string str = "你好,世界!"; int length = str.Length; int countOfBytes = System.Text.Encoding.Default.GetByteCount(str); Console.WriteLine(...
  • 本文给大家分享的是使用Javascript 计算字符串在localStorage中所占字节数,分别对UTF-8和UTF-16两种编码进行了详细说明,有需要的小伙伴可以参考下。
  • 字符串字节数和长度

    万次阅读 2017-12-03 22:36:30
    sizeof求后面的内容or表达式所占用的字节数 strlen求字符串的有效长度,只要遇到'\0'就认为字符串结束
  • Hive SQL获取字符字节数

    千次阅读 2022-05-01 16:49:02
    不同字符集存储中文字符字节数不一样,计算字节数时,按需取 select length('我') -- 1 ,length(encode('我','UTF-8')) -- 3 ,length(encode('我','GBK')) -- 2 ,length(encode('我,a','GBK')) -- 4 ...
  • (1)UTF-8 是一种针对Unicode的可变长度字符编码,可以表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII相容,使用一至四个字节为每个字符编码。 字符代码在: 000000 – 00007F之间的,用一个字节...
  • JS计算字符串字节数

    千次阅读 2016-12-06 18:35:03
    js 计算字符串字节数 3种方法
  • 字符串字节数

    千次阅读 2020-12-05 18:10:07
    字符串字节数
  • C#根根据不同的字符编码方式获取字符串字节数
  • js 计算字符串字节长度

    千次阅读 2018-08-23 11:57:51
    _getByteLen(v) { var len = 0; for (var i = 0; i &amp;amp;lt; v.length; i++) { var a = v.charAt(i); if (a.match(/[^\x00-\xff]/ig) != null) { len += 2; } ...
  • 计算字符串占用字节数

    千次阅读 2016-06-01 13:29:30
    =====================...◆ 字符串占用字节数: ● Ansi: char szStr[] = "abc"; 占用字节数求法:sizeof(szStr); char *psz = "defgh"; 占用字节数求法:strlen(psz)*sizeof(char); ● Unicode: wch
  • 计算python中的Unicode字符字节数

    千次阅读 2020-12-03 18:42:31
    如果你想找出一个Unicode字符可以有多少字节需要那就要看字符编码:>>> print(u"\N{EURO SIGN}")€>>> u"\N{EURO SIGN}".encode('utf-8') # 3 bytes'\xe2\x82\xac'>>> u"\N{EURO SIGN}"....
  • 下面的函数都是用于计算字符串长度,英文算一个,中文算两个。效果一样,效率却未必一样,大家可以自行选择下。
  • Java字符串中常用字符占用字节数

    千次阅读 2021-08-27 15:54:05
    而Java中常用的字符包括数字、英文字母、英文符号、中文汉字、中文符号等,若在字符串中包含里面的多种字符,它们是否都占两个字符呢?答案是否定的。 public class CharBytes { public static void main(String[] ...
  • // 21,一个中文占三个字节 原理: 已unicode为中介 utf-8 ——》unicode——》gbk gbk ——》unicode——》utf-8 //utf-8转gbk String clientStr = new String(str.getBytes("GBK"), "GBK"); //gbk转utf-8 String ...
  • Java字符串 字节数计算 截取长度

    千次阅读 2012-12-26 16:07:11
    一个java的面试题: ...1.需要考虑中文的长度,utf-8是3个字节,gbk是2个字节 ...2.byte[pos]如果pos的位置是... * 编写一个截取字符串的函数,输入为一个字符串字节数,输出为按字节截取的字符串。 但是要保证汉
  • Python len()函数详解:获取字符串长度或字节数 Python 中,要想知道一个字符串有多少个字符(获得字符串长度),或者一个字符串占用多少个字节,可以使用 len 函数。 len 函数的基本语法格式为: len(string) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 432,636
精华内容 173,054
热门标签
关键字:

怎么计算字符串的字节数