原标题:乱码问题解决之“锟斤拷”

本文作者:张语盈

本文编辑:李朋冲

技术总编:薛 原

乱码是我们在用stata读入文件时经常会出现并且令人头疼的问题,当我们错误定义了读入文件的编码时,就可能出现一些特殊的乱码问题。今天为大家介绍其中一种比较常见的乱码问题----“锟斤拷”及其解决方法。

“锟斤拷”是一串经常在搜索引擎页面和其他网站上看到的乱码字符,如下图所示的某个单位招聘信息中,联系人和联系人职位两项,就无法被正确识别出来。

“锟斤拷”源自于GBK字符集和Unicode字符集之间的转换问题。在Unicode和原有编码体系的转化过程中,有一些字符用Unicode是无法表示的,Unicode官方用了一个占位符来表示这些无法表示的字符,这个字符用unicode转义字符表示为ufffd,对应的utf-8编码为“EFBFBD”。如果这个编码重复两次,然后放到GBK/GB2312/GB18030的环境中显示时,一个汉字占据2个字节,最终的结果就是:锟斤拷——锟(EFBF),斤(BDEF),拷(BFBD)。

举一个简单的例子来解释这种乱码问题。

首先从国泰安数据库上下载一个CSV格式的资产负债表,用import delimited命令读入,并设置读入文件的编码为utf-8。程序如下:

clear

importdelimited using 资产负债表.csv, encoding( "utf-8")

可以看到变量stkcd的标签出现了乱码。

这个乱码是什么?我们先来看一下它的庐山真面目。

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)必须原创,禁止抄袭;

责任编辑:

python3 中文乱码 锟斤_乱码问题解决之“锟斤拷”相关推荐

  1. windows7安装中文语言包及文乱码问题解决方法

    [http://youzitool.com 新博客,欢迎访问] windows7安装中文语言包及文乱码问题解决方法 安装中文语言包 1.最近安装了windows7英文版,如果要使用中文语言,可通过&q ...

  2. jupyter中中文显示不正常_解决jupyter notebook显示不全出现框框或者乱码问题

    在开头加入以下设置即可解决 %matplotlib inline plt.rcParams['figure.figsize'] = (12.0, 8.0) # 调整大小,可根据自实际情况进行设置 pl ...

  3. 51单片机串口打印不管是中文还是英文都是乱码的问题

    讲道理都tm大三暑假了还搞51单片机而且关键是还遇到了一个问题解决了一天才解决出来真的是很丢人了. 不过我会珍惜这个机会的,毕竟这有可能是我辈子最后一次跟着老师搞这个破玩意了. 好了不废话了 收! 昨 ...

  4. 中文经过hibernate处理变成乱码

    中文经过hibernate处理变成乱码,这个问题困扰了我好几天,试过修改hibernate的hibernate.cfg.xml配置文件,修改tomcat配置文件,都不行,头疼死了.后来经同事指点了一下 ...

  5. keil复制代码乱码_win7系统下Keil复制中文注释到记事本出现乱码的解决方法

    Keil是软件编程的时候经常会用到的软件,但是有不少win7系统用户在复制Keil源程序中文注释到记事本的时候,发现出现了乱码的情况,遇到这样的问题该如何处理呢,现在为大家带来win7系统下Keil复 ...

  6. utf-8编码的中文注释 在 sourceinsight 显示乱码的解决方法---utf8 转gb2312插件

    utf-8编码的中文注释 在 sourceinsight 显示乱码的解决方法---utf8 转gb2312插件 参考文章: (1)utf-8编码的中文注释 在 sourceinsight 显示乱码的解 ...

  7. VC6里面的中文名字或者注释复制乱码解决

    只要你把输入法换成中文的输入法如搜狗,复制的编辑器输入法也调整为中文的,就会解决乱码复制问题,不知道原因,肯定是编码问题,不想深究.解决问题而已 转载于:https://www.cnblogs.com ...

  8. $http中文乱码|param乱码|angular提交后台乱码|

    2019独角兽企业重金招聘Python工程师标准>>> 当我用以下配置 $http({url:url,//请求地址 method:'post', data: data,//请求参数 ...

  9. java压缩----使用sun JDK压缩--中文的文件名会是乱码

    经测试,文件名为中文的压缩完为乱码,测试过.txt 的文件类型,中文内容可以正常显示. 所以这种方案不可行. import java.io.File; import java.io.IOExcepti ...

最新文章

  1. JavaScript权威Douglas Crockford:代码阅读和每个人都该学的编程
  2. 接口测试 2021 接口测试白皮书 欢迎下载阅读
  3. virtualbox在装centos5.6时自协把virtualbox add-on 装上了
  4. 最新、最全面的LAMP+wordpress安装过程!!
  5. 若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是( )?
  6. Uncaught TypeError: Cannot read property ‘getters‘ of undefined
  7. mysql脚本模式创建索引_mysql创建脚本索引范例
  8. python之collections之有序字典(OrderedDict)
  9. [html] web workers有用过吗?能帮我们解决哪些问题?
  10. 模块 python_Python入门基础:模块基础
  11. MySQL客户端mysql常用命令
  12. LeetCode-3. 无重复字符的最长子串
  13. centos6.5 搭建时间服务器
  14. [UML]转:UML类图集中关系的总结
  15. 首次启动优美新手指引tip
  16. 【堆排序的递归和非递归实现】Java实现
  17. c语言最短线性路径算法,巧用Excel规划求解最短路径
  18. J Magn Reson Imaging:磁共振指纹(MRF)动脉自旋标记(ASL)的灌注特性估计
  19. 电力电子技术填空题(80+道),适合期末复习、面试等
  20. 0032-PAT满分行动第二天:简单模拟1046、1008、1012

热门文章

  1. 无痕模式后如何找到历史_新高考“3+1+2”模式下,物理与历史如何选择更好
  2. Glide 源码解析之监听生命周期
  3. 手机游戏开发现状分析
  4. 使用Keras画神经网络准确性图
  5. AIDE手机编程初级教程(零基础向) 1.2 初识界面编程
  6. Complier Validation via Equivalence Modulo Inputs
  7. iOS技术总结1——3D Touch技术
  8. 萌新卷妹带你逃出算法无名岛第五站
  9. 安装xposed(解决xposed问题)
  10. 制作Mind+ Arduino UNO + EMW3080芯片连接阿里云的用户库