`
ymq267
  • 浏览: 131077 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

utf-8的中文是一个汉字占三个字节长度吗?

阅读更多
英文字母和中文汉字在不同字符集编码下的字节数
英文字母:

字节数 : 1;编码:GB2312

字节数 : 1;编码:GBK

字节数 : 1;编码:GB18030

字节数 : 1;编码:ISO-8859-1

字节数 : 1;编码:UTF-8

字节数 : 4;编码:UTF-16

字节数 : 2;编码:UTF-16BE

字节数 : 2;编码:UTF-16LE



中文汉字:

字节数 : 2;编码:GB2312

字节数 : 2;编码:GBK

字节数 : 2;编码:GB18030

字节数 : 1;编码:ISO-8859-1

字节数 : 3;编码:UTF-8

字节数 : 4;编码:UTF-16

字节数 : 2;编码:UTF-16BE

字节数 : 2;编码:UTF-16LE

这是个好问题,可以当作一个笔试题。先从字符编码讲起。 1、美国人首先对其英文字符进行了编码,也就是最早的ascii码,用一个字节的低7位来表示英文的128个字符,高1位统一为0; 2、后来欧洲人发现尼玛你这128位哪够用,比如我高贵的法国人字母上面的还有注音符,这个怎么区分,得,把高1位编进来吧,这样欧洲普遍使用一个全字节进行编码,最多可表示256位。欧美人就是喜欢直来直去,字符少,编码用得位数少; 3、但是即使位数少,不同国家地区用不同的字符编码,虽然0--127表示的符号是一样的,但是128--255这一段的解释完全乱套了,即使2进制完全一样,表示的字符完全不一样,比如135在法语,希伯来语,俄语编码中完全是不同的符号; 4、更麻烦的是,尼玛这电脑高科技传到中国后,中国人发现我们有10万多个汉字,你们欧美这256字塞牙缝都不够。于是就发明了GB2312这些汉字编码,典型的用2个字节来表示绝大部分的常用汉字,最多可以表示65536个汉字字符,这样就不难理解有些汉字你在新华字典里查得到,但是电脑上如果不处理一下你是显示不出来的了吧。 5、这下各用各的字符集编码,这世界咋统一?俄国人发封email给中国人,两边字符集编码不同,尼玛显示都是乱码啊。为了统一,于是就发明了unicode,将世界上所有的符号都纳入其中,每一个符号都给予一个独一无二的编码,现在unicode可以容纳100多万个符号,每个符号的编码都不一样,这下可统一了,所有语言都可以互通,一个网页页面里可以同时显示各国文字。 6、然而,unicode虽然统一了全世界字符的二进制编码,但没有规定如何存储啊,亲。x86和amd体系结构的电脑小端序和大端序都分不清,别提计算机如何识别到底是unicode还是acsii了。如果Unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,文本文件的大小会因此大出二三倍,这对于存储来说是极大的浪费。这样导致一个后果:出现了Unicode的多种存储方式。 7、互联网的兴起,网页上要显示各种字符,必须统一啊,亲。utf-8就是Unicode最重要的实现方式之一。另外还有utf-16、utf-32等。UTF-8不是固定字长编码的,而是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。这是种比较巧妙的设计,如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。 8、注意unicode的字符编码和utf-8的存储编码表示是不同的,例如"严"字的Unicode码是4E25,UTF-8编码是E4B8A5,这个7里面解释了的,UTF-8编码不仅考虑了编码,还考虑了存储,E4B8A5是在存储识别编码的基础上塞进了4E25。 9、UTF-8 使用一至四个字节为每个字符编码。128 个 ASCII 字符(Unicode 范围由 U+0000 至 U+007F)只需一个字节,带有变音符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及马尔代夫语(Unicode 范围由 U+0080 至 U+07FF)需要二个字节,其他基本多文种平面(BMP)中的字符(CJK属于此类-Qieqie注)使用三个字节,其他 Unicode 辅助平面的字符使用四字节编码。  10、最后,要回答你的问题,常规来看,中文汉字在utf-8中到底占几个字节,一般是3个字节,最常见的编码方式是1110xxxx 10xxxxxx 10xxxxxx。
分享到:
评论

相关推荐

    utf8转换为gbk格式

    UTF-8的最大特点是其可变字节编码,一个字符可能由1到4个字节组成,根据字符的不同,字节开头的位数不同,这样设计使得UTF-8能够兼容ASCII编码,且在处理英文文本时效率较高。 GBK,全称“Great Chinese Character ...

    PHP程序设计-3期(KC016) 2.8.1字符串长度习题.doc

    但在UTF-8编码中,中文字符通常占用三个或四个字节,因此对于包含中文字符的字符串,`strlen()`返回的不是实际的字符个数。例如,题目中的第一题: ```php <?php $str = "Hello,China"; echo strlen($str); ?> ...

    自动计算出多种编码字符串长度

    例如,一个汉字在UTF-8中通常占3个字节。 "CharCounter.exe"这个程序显然就是用来帮助用户计算上述三种编码方式下字符串的长度。通过这个工具,用户可以快速准确地获取ansi、unicode和utf8编码字符串的字节数,这...

    解决php截取中文出现乱码

    在这个例子中,`mb_substr()` 第一个参数是原始字符串 `$string`,第二个参数是从第0个位置开始截取,第三个参数是截取长度为2个字符,最后一个参数指定编码为 `"UTF-8"`。这种方法更为简洁明了,同时也避免了直接...

    星霜文字代码查看器

    而在UTF-8编码中,一个汉字可能占3或4个字节,因此长度计算需考虑字节组合。这款工具可以帮助用户准确地获取不同编码下的字符串长度。 此外,该程序还具备字符串大小写转换功能。在计算机处理文本时,大小写的转换...

    python学习笔记ing

    例如,`'中文'` 的长度为4(每个中文字符在UTF-8编码中占用3个字节,外加字符串本身占用的空间),而 `u'中文'` 的长度为2(每个字符在Unicode中占两个字节)。 #### 字符与数字的转换 - **`ord()` 和 `chr()` ...

    网站编码详解(送给初级网站程序员)

    对于其他字符,UTF-8使用1至4个字节表示,具有很好的向后兼容性和国际化的支持能力。由于其高效性和广泛的兼容性,UTF-8已成为网页和文件编码的首选。 - **GB2312**是中国大陆地区早期的汉字编码标准,主要用于...

    jsp中页面间传汉字参数转码的方法.docx

    - 表单输入限制:限制用户在表单字段中输入的汉字数量,通常基于字符长度而非字节长度,因为一个汉字占两个字节。 - JS正则表达式提取汉字:编写正则表达式以提取字符串中的所有汉字,这对于文本分析或处理非常有用...

    C++中英混合字符串截取

    在处理中文字符时,通常会用到UTF-8编码,这是一种变长的字符编码方式,一个汉字可能由1至4个字节组成。在UTF-8编码中,英文字符占1字节,而汉字占3或4字节。因此,截取字符串时,我们不能简单地按照字节数来截断,...

    三级嵌入式系统.doc

    嵌入式系统中常用的西文字符及其编码是 ASCII 字符集和 ASCII 码,即美国标准信息交换码,共有 128 个字符,一个字符占一个字节。我国目前广泛使用的汉字编码国家标准有 GB2312 和 GB18030。 GB18030 字符集与国际...

    php字符串截取.pdf

    - 使用`ord()`函数判断字符是否为中文(GB2312编码下中文的ASCII值范围),如果是,则跳过下一个字符,因为一个中文字符在GB2312中占两个字节。 **1.1.2 示例代码** ```php echo mysubstr('善良能够培养一个人的...

    Mysql varchar大小长度问题介绍

    在这个例子中,减去4是因为INT类型的c占4个字节,减去30 * 3是因为CHAR(30)占用90个字节(UTF-8编码下每个字符3字节),然后除以3(UTF-8编码每个字符3字节)。 如果VARCHAR字段的定义长度超过了上述限制,MySQL会...

    EditText字符大小的限制(40个字符或者20个汉字)

    而汉字则不同,每个汉字在UTF-8编码下占用3个字节,因此40个字符可能等于20个汉字,具体取决于输入的内容。 要实现这个功能,我们可以通过监听`EditText`的`TextWatcher`来实时检查输入的字符数。`TextWatcher`是一...

    php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例

    函数同样接收三个参数,但这里需要处理的问题是UTF-8编码的中文字符可能占用多个字节,因此不能简单地像GBK那样以字节为单位进行截取。函数通过循环遍历字符串,检查每个字符的字节大小,如果是多字节的字符(ASCII...

    2021-2022计算机二级等级考试试题及答案No.4082.docx

    - **中文字符与英文字符的区别**:在大多数编程语言中,中文字符占两个字节(在某些编码中如UTF-8可能更多),而英文字符占一个字节。 **例题解析:** - **题目**:“表达式Len("123程序设计ABC")的值是多少?” - ...

    mysql中如何判断当前是字符 mysql判断字段中有无汉字

    如果有汉字,由于每个汉字占三个字节,总长度将会比实际字符数大。 另一方面,`CHAR_LENGTH` 函数则是根据字符数来计算长度,无论单字节字符还是多字节字符,它都计为一个字符。因此,对于包含汉字的字符串,`CHAR_...

    php中strlen和mb_strlen用法实例分析

    而在UTF-8编码下,每个汉字占三个字节,所以返回`9`。最后,如果不指定编码,则默认使用PHP的内部编码(通常是UTF-8),结果同样为`9`。 `mb_strlen()`函数的优势在于能够正确处理多字节字符,特别是对于包含中文或...

    java 字符串截取的实例详解

    在 utf-8 编码下,一个汉字占三个字节,因此需要根据字节数组的长度截取子串。在 utf-8 编码下,字符串截取的实例代码如下所示: ```java private static String StringCutByUtf8(String str, int len) { byte[] bs...

    2021-2022计算机二级等级考试试题及答案No.3605.docx

    而汉字通常使用Unicode编码(例如UTF-8),每个汉字占用2字节(对于UTF-8而言,在多数情况下是这样的,但实际上汉字的编码长度可能有所不同)。 **正确答案解析:** 选项 B 正确。一个汉字和一个英文字符在微型机中...

Global site tag (gtag.js) - Google Analytics