`
- 浏览:
130349 次
- 性别:
- 来自:
吉林
-
英文字母和中文汉字在不同字符集编码下的字节数
英文字母:
字节数 : 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。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
UTF-8的最大特点是其可变字节编码,一个字符可能由1到4个字节组成,根据字符的不同,字节开头的位数不同,这样设计使得UTF-8能够兼容ASCII编码,且在处理英文文本时效率较高。 GBK,全称“Great Chinese Character ...
但在UTF-8编码中,中文字符通常占用三个或四个字节,因此对于包含中文字符的字符串,`strlen()`返回的不是实际的字符个数。例如,题目中的第一题: ```php <?php $str = "Hello,China"; echo strlen($str); ?> ...
例如,一个汉字在UTF-8中通常占3个字节。 "CharCounter.exe"这个程序显然就是用来帮助用户计算上述三种编码方式下字符串的长度。通过这个工具,用户可以快速准确地获取ansi、unicode和utf8编码字符串的字节数,这...
在这个例子中,`mb_substr()` 第一个参数是原始字符串 `$string`,第二个参数是从第0个位置开始截取,第三个参数是截取长度为2个字符,最后一个参数指定编码为 `"UTF-8"`。这种方法更为简洁明了,同时也避免了直接...
而在UTF-8编码中,一个汉字可能占3或4个字节,因此长度计算需考虑字节组合。这款工具可以帮助用户准确地获取不同编码下的字符串长度。 此外,该程序还具备字符串大小写转换功能。在计算机处理文本时,大小写的转换...
例如,`'中文'` 的长度为4(每个中文字符在UTF-8编码中占用3个字节,外加字符串本身占用的空间),而 `u'中文'` 的长度为2(每个字符在Unicode中占两个字节)。 #### 字符与数字的转换 - **`ord()` 和 `chr()` ...
对于其他字符,UTF-8使用1至4个字节表示,具有很好的向后兼容性和国际化的支持能力。由于其高效性和广泛的兼容性,UTF-8已成为网页和文件编码的首选。 - **GB2312**是中国大陆地区早期的汉字编码标准,主要用于...
- 表单输入限制:限制用户在表单字段中输入的汉字数量,通常基于字符长度而非字节长度,因为一个汉字占两个字节。 - JS正则表达式提取汉字:编写正则表达式以提取字符串中的所有汉字,这对于文本分析或处理非常有用...
在处理中文字符时,通常会用到UTF-8编码,这是一种变长的字符编码方式,一个汉字可能由1至4个字节组成。在UTF-8编码中,英文字符占1字节,而汉字占3或4字节。因此,截取字符串时,我们不能简单地按照字节数来截断,...
嵌入式系统中常用的西文字符及其编码是 ASCII 字符集和 ASCII 码,即美国标准信息交换码,共有 128 个字符,一个字符占一个字节。我国目前广泛使用的汉字编码国家标准有 GB2312 和 GB18030。 GB18030 字符集与国际...
- 使用`ord()`函数判断字符是否为中文(GB2312编码下中文的ASCII值范围),如果是,则跳过下一个字符,因为一个中文字符在GB2312中占两个字节。 **1.1.2 示例代码** ```php echo mysubstr('善良能够培养一个人的...
在这个例子中,减去4是因为INT类型的c占4个字节,减去30 * 3是因为CHAR(30)占用90个字节(UTF-8编码下每个字符3字节),然后除以3(UTF-8编码每个字符3字节)。 如果VARCHAR字段的定义长度超过了上述限制,MySQL会...
函数同样接收三个参数,但这里需要处理的问题是UTF-8编码的中文字符可能占用多个字节,因此不能简单地像GBK那样以字节为单位进行截取。函数通过循环遍历字符串,检查每个字符的字节大小,如果是多字节的字符(ASCII...
- **中文字符与英文字符的区别**:在大多数编程语言中,中文字符占两个字节(在某些编码中如UTF-8可能更多),而英文字符占一个字节。 **例题解析:** - **题目**:“表达式Len("123程序设计ABC")的值是多少?” - ...
如果有汉字,由于每个汉字占三个字节,总长度将会比实际字符数大。 另一方面,`CHAR_LENGTH` 函数则是根据字符数来计算长度,无论单字节字符还是多字节字符,它都计为一个字符。因此,对于包含汉字的字符串,`CHAR_...
而在UTF-8编码下,每个汉字占三个字节,所以返回`9`。最后,如果不指定编码,则默认使用PHP的内部编码(通常是UTF-8),结果同样为`9`。 `mb_strlen()`函数的优势在于能够正确处理多字节字符,特别是对于包含中文或...
在 utf-8 编码下,一个汉字占三个字节,因此需要根据字节数组的长度截取子串。在 utf-8 编码下,字符串截取的实例代码如下所示: ```java private static String StringCutByUtf8(String str, int len) { byte[] bs...
而汉字通常使用Unicode编码(例如UTF-8),每个汉字占用2字节(对于UTF-8而言,在多数情况下是这样的,但实际上汉字的编码长度可能有所不同)。 **正确答案解析:** 选项 B 正确。一个汉字和一个英文字符在微型机中...
UTF-8编码中,汉字占3个字节,英文字符占1个字节。因此,'abc 你好'.encode() 占9个字节('abc' + '你好'的UTF-8编码)。 这些题目覆盖了Python的基础语法、字符串处理、正则表达式、数学运算、列表操作、字符串...