字符编码什么的最头疼了

2017-09-08 徐露露 爬虫俱乐部 爬虫俱乐部

大大大大大新闻————自公众号推送视频讲解环节以来,深受广大读者朋友的喜爱。近日向我们提问的粉丝也是大幅增加呐!为了便捷管理相关信息,提高工作效率,我们对提问方式做了略微调整哟~提问者需点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

可爱的童鞋们,开学已经快一周了,小编无奈地发现早上不提前去教室占座就得坐最后一排,头疼;上完课去随缘餐厅吃饭,人头涌动,头疼;想要抢个国庆的火车票,余票0张,头疼;下午上完课去西苑觅食,想吃个黄石土豆,摊位前已经排满了人,头疼。

最近小编在学stata的过程中,又弄不清关于字符编码的问题,头疼。所以固执的爬虫君决定写两篇推文好好把关于字符编码的问题给弄清楚。

在接下来的两篇推文中,我们将频繁地接触到字节字符基础ASCII编码扩展ASCII码unicodeutf-8。所以在推文的开头,小编就给大家介绍一下这些的概念。

字节与字符

在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。所以字节是一种计量单位,是计算机信息技术用于计量存储容量的一种计量单位。

字符是计算机中使用的文字和符号,比如1、A、%……—*()——+等等。所以字节与字符不是一个位面的概念喔。

ASCII编码

首先,ASCII码包括基础ASCII码(0-127)和扩展ASCII码(128-255)。基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符(第0~31号及第127号,如:换行、回车、换页、删除等)。英语使用这128个符号编码就够了,但是用来表示其他语言是远远不够的,于是一些欧洲国家利用字节中最高位编入新的符号,以再附加128 个特殊符号字符、外来语字母和图形符号。

unicode编码

可是世界上存在着多种编码方式,这就容易造成乱码,于是unicode就产生了。unicode是一个很大的集合,可以容纳100多万个符号,它将世界上所有的字符都纳入了其中,每一个符号都给予一个独一无二的编码,在unicode编码中,一般情况下,一个字符占用两个字节。我们已经知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储空间来说是极大的浪费,文本文件的大小会因此大出二三倍,这是难以接受的。

utf-8编码

本着节约的精神,又出现了把unicode编码转化为可变长编码的utf-8编 码,它可以根据不同的符号而变化字节长度,当字符在基础ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分;当 字符在扩展ASCII码的范围时,就用两个字节。值得注意的是在unicode中,一个中文字符(中文符号及大部分常用汉字)占2个字节,而utf-8一个中文字符(中文符号及大部分常用汉字)占3个字节。从unicode到uft-8并不是直接的对应,而是要过一些算法和规则来转换。

注:stata14开始用的是utf-8编码。并且,在utf-8编码中,基础ASCII编码中的字符只占一个字节,扩展ASCII编码中的字符占两个字节,大部分常用汉字占三个字节,对于比较复杂的汉字(如扩展B、扩展C等)占4个字节。

往期相关推文“识得庐山真面目—详解ASCII编码”, “嘿,我才不怕不一样的编码小怪兽!”

接下来就给大家介绍与之相关的strlen(),ustrlen(),udstrlen()。

一、strlen(s)

strlen()是建立在字节的基础上,它适用于计算字符串s所占的字节长度。在上面已经介绍了,在utf-8编码中,基础ASCII编码中的字符只占一个字节,扩展ASCII编码中的字符占两个字节,大部分常用汉字占三个字节:

二、ustrlen(s)

utrlen()是建立在unicode的基础上,输出的是字符串s的总字符数。在推文的最开始,我们已经介绍了unicode编码,无论什么符号,它都只算一个字符,即输出的结果为字符串所占的字符个数。

比如我们的字符串内容为“Aß爬虫俱乐部”,我们来计算一下它所占的字符个数:

三、udstrlen(s)

同样,udstrlen()也是建立在unicode的基础上,输出的是在Stata结果窗口中显示字符串s所需显示的列数。ASCII编码与扩展ASCII编码都只占一列的显示空间,汉字等复杂字符占两列的显示空间。


什么?!没看懂!!不要紧!!戳下面,听爬虫小将的详细讲解,也欢迎大家的批评指正哟!


以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                        文字编辑:徐露露

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.命令sum2docx输出统计量表到docx文件

4.reg2docx报告你的实证结果吧!

5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件

6.putdocx+wordconvert—将实证结果输出到Word.docx)文档

7.Stata 15Markdown——没有做不到,只有想不到!

8.矩阵和宏的故事

9.shelloutopen anything

10.Putpdf--神奇的转换工具



关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号