UTF-8最多编码字符数(最多可以容纳多少数量的字符)?
2023-09-14 09:08:38 时间
转载自https://wenwen.sogou.com/z/q775098352.htm
提问:
UTF-8最多编码字符数(最多可以容纳多少数量的字符)?
这个。。。如果你说的是它能表示多长的字符数据,那没有限制的。 如果你意思是他的编码里面能表示多少种字符,这个真心没人去算,因为它是可变长度的,实在要说的话就是理论上1到6字节表示的一个字符都会有,已经能表示上亿种字符,目前这一种编码直接搞定世界大多数语言都问题不大。
,我问的是表示多少字符。不是最大4字节吗?8^2+8^4^+8^6+8^8=17 043 520?怎么算出上亿字符?求计算方法。
这个问题,首先的话我对自己没说清楚表示歉意,因为UTF-8这个词表达的含义比较多,在历史上也被不同定义过,我说的是最大的情况。 具体UTF-8怎么去到6字节,你可以去百度百科看一下,大意是说最一开始设计的UTF-8理论上就能去到6字节,但是后面被折腾成标准化UTF-8后,5,6字节长的被和谐了。但是最后又写出一种“修正的UTF-8”,理论上也能有6字节。 那么说回你想要的结果,你要的是最大4字节的标准化UTF-8的可表示字符数吧。我们先搞清楚它怎么表示。
下表总结了编码规则,字母x表示可用编码的位。 Unicode符号范围 | UTF-8编码方式 (十六进制) | (二进制) --------------------+--------------------------------------------- 0000 0000-0000 007F | 0xxxxxxx 0000 0080-0000 07FF | 110xxxxx 10xxxxxx 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
跟据上表,解读UTF-8编码非常简单。如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。后面跟的开头都是10。 那么自己数一下X的数量就知道,结果是2^6+2^11+2^16+2^21=2164864。 也就是说,标准化的UTF-8能表示200多万种字符。 希望以上回答您能满意。还有问题请追问,满意就采纳吧,谢谢。
2^11和2^21中的11和21怎么来的?
不是说了数X的个数么。。第二行二进制里(110xxxxx 10xxxxxx)不是有11个X吗……所以就是2^11罗。21同理。X对应实际编码里能改的位。 至于前面那几位110,10因为编码里不能动的所以就没计算了。 我晕结果有笔误,应该是2^7+2^11+2^16+2^21,不过得数应该没问题。
这里肯定涉及到了字节(Byte)和位(bit)的转换了吧,前面固定110和10的作用是什么?
。。。。我的第一个追答“跟据上表,解读UTF-8编码非常简单。如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。后面跟的开头都是10。”这段已经说得很明白了。 意思就是,如果一个字符要占2字节,它的第一字节开头就是110(2个1加1个0,0是为了隔开连续的1),第二字节就是10开头(表示这是一个多字节字符的一部分。编码如此,不知道是不是为了防止后面误跟一个单字节字符)。 另外字节和位本来就是一回事,同样东西不同单位而已,同样一个二进制位串1111 1111你也可以说是字节FF,就像1升水你可以说是1000毫升水。用二进制位来算要直观一点罢了。
相关文章
- Java:字符编码
- 请用charAt获取javascript获取字符串指定位置字符
- Java实现 LeetCode 717 1比特与2比特字符(暴力)
- Java实现 蓝桥杯VIP 算法提高 最长字符序列
- 使用escape编码地址栏中的中文字符
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- 【问题解决方案】Markdown中部分字符显示为格式因而得不到预期结果的问题解决
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- 正则表达选择字符组(六)(1000则)
- X64 Linux无法从本地字符界面登陆解决
- Python3 使用推导式统计字符出现次数
- 用Java打印中文字符的GBK,UTF8和UTF16编码
- 字节,字符,Unicode及Web编码
- 使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法
- Dataset之图片数据增强:设计自动生成(高级封装之命令行解析实现)汽车车牌图片算法(cv2+PIL+argparse)根据随机指定七个字符生成逼真车牌图片(自然场景+各噪效果+对应txt说明文档)
- 【华为机试真题 Python实现】带空白字符的字符串匹配
- 处理字符串,每两个字符加入一个空格 C语言 Qt
- Java中出现“错误: 编码GBK的不可映射字符”的解决方法
- UVA 10815 Andy's First Dictionary(字符处理)
- 逆向——字符与字符串,中文字符GB2312编码由来
- 用字符指针指向一个字符串
- 【C】 删除字符串中字符
- Go 变量 字符串与字符编码