这个乱码是什么?我们先来看一下它的庐山真面目。
local stkcdlab: variable label stkcdlabel var stkcd `=ustrfrom( "`stkcdlab'", "gb18030", 1) '
结果如图:
我们可以看到,与爬虫俱乐部之前的推文《Unicode失效时如何转码dta文件?》中介绍过的转码方法不同,变量标签在转码后仍然存在特殊的乱码,也就是我们前文提到的“锟斤拷”。
接下来,我们从乱码标签和字符串“Stkcd”的区别入手观察二者有何差异。
clear
importdelimited using 资产负债表.csv, encoding( "utf-8")local stkcdlab: variable label stkcddisp tobytes( "`stkcdlab'", 1)disp tobytes( "Stkcd", 1)
结果如图:
乱码标签比字符串“Stkcd”多了xefxbfxbdxefxbfxbd。
我们选择用两种方法来解决这个乱码问题。
数据处理、实证研究中提供帮助。承蒙30000+粉丝的支持与厚爱,我们在腾讯课堂推出了网络视频课程,专注于数据整理、网络爬虫、循环命令编制和结果输出…李老师及团队精彩的讲解,深入浅出,注重案例与实战,让您更加快速高效地掌握Stata技巧及数据处理的精髓,而且可以重复观看,百分百好评,简单易学,一个月让您从入门到精通,绝对物超所值!
爬虫俱乐部最近一次的网课为大家系统整理了各种stata读入文件乱码问题的解决方法,请大家关注爬虫俱乐部腾讯课堂的课程《精通stata之数据整理》。基本上,我们会按照一周一次课的频率持续更新学习内容,欢迎大家前去学习!课程网址:
https://ke.qq.com/course/286526?tuin=1b60b462,敬请关注!
方法一
该方法是把乱码部分替换为空,这样,乱码标签就能够变为"Stkcd"了。根据前面的介绍,我们可以用ufffd表示乱码内容,而正则表达式可以使用这一类unicode转义字符,因此我们用正则表达式替换函数把乱码删除,程序如下:
clear
importdelimited using 资产负债表.csv, encoding( "utf-8")local stkcdlab: variable label stkcdlabel var stkcd `=ustrregexra( "`stkcdlab'", "ufffd", "") '
结果如下图所示,乱码问题得到了解决。
方法二
“锟斤拷”出现的原因是不同编码之间转换过程出现了问题,我们在读入的时候,没有选择正确的编码。如何选择正确的编码读入文件呢?首先,将文件“资产负债表”用记事本打开,点击文件,选择另存为。
可以看到下面的编码显示的是Unicode编码,所以直接在encoding()选项后面选择Unicode来读入。然后乱码问题即得到解决。
clear
importdelimited using 资产负债表.csv, encoding( "unicode")
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
1)必须原创,禁止抄袭;
注意事项:返回搜狐,查看更多