stata乱码解决方案说明

1 乱码出现原因

如今Stata进入16时代,各项功能日趋完善。Stata的各个版本之间中文格式存在较大差异,目前最新版本为Stata16,若使用Stata16打开使用其他版本数据,可能出现乱码的情况。

Stata14运用了适用性更广的UTF-8编码格式,从而保证 do文档,dta 文档等文件中可以支持各种语言和字符,非英语用户再也不用一定使用英语字母作为变量名了。对于国内用户,使用 Stata 13 及早期版本保存的 do 文件和 dta 文件一般为 gb2312 或gbk 或 gb18030 编码,而 Stata 14 及高级版本采用的是 UTF-8 编码。所以早期版本Stata 保存下来的 do 文件和 .dta 文件在高级版本 Stata 下就会出现乱码的情况,主要包含以下三种情况:

情况1:数据集dta文件变量名或者变量标签存在乱码。

情况2:数据集dta文件当中的文本数值存在乱码。

情况3:Stata的do文档出现乱码。

2 乱码出现具体情况

2.1关于do文档

对于Stata新版本[1](Stata16,Stata15,Stata14)之间,相互查看使用do文档,不会出现乱码的情况。例如:运用Stata16版本时,可以正常打开Stata15和Stata14的do文档,不会出现乱码情况。

对于Stata旧版本(Stata13,Stata13以下版本)之间,相互查看使用do文档,不会出现乱码的情况。

在通过Stata旧版本查看和运用Stata14版本及以上版本的do文件时,会出现乱码情况需要转码,例如:用Stata13打开Stata14版本的do文档,出现乱码,具体如下图:

在通过Stata新版本查看和运用Stata13版本及以下版本的do文件时,软件会自动提示选择何种编码打开,此时一般选择 gb18030 即可。如下图:

2.2关于dta文档

当使用Stata不同版本打开其他版本的dta文件时,新版本之间可以相互查看使用dta文档,不会出现乱码的情况。出现乱码的结果如下表:

例1用Stata13打开Stata14版本的数据集,就会出现提示错误,具体提示内容:dta来自于Stata的最新版本。类型更新查询以确定Stata的免费更新是否可用,并浏览http://www.stata.com/确定是否有可用的新版本。如下图:

例2用Stata14打开运用Stata13版本的数据集,就会存在乱码现象,数据集中的第一列出现乱码情况,具体如下图:

例3用Stata14打开运用Stata16版本的数据集,就可以正常使用,不会出现乱码情况,如下图:

3 乱码解决方案

针对乱码问题,Stata 官方给出了一套解决方案。并提供相应的命令,已实现转码,从编码 gb18030 转码至 UTF-8。由于 gb18030 编码包含 gbk ,而 gbk 又包括gb2312,所以针对国内用户,转码前设置编码 gb18030 即可。

具体代码如下[2]:

clear  //在转码之前需要将STATA内存中的数据清空

cd"E:\CHFS"  //假设需要修改的文件存放在"E:\CHFS"路径下

unicode encodingset gb18030  //将文本编码设置为中文

unicode analyze*  //分析需要转码的文档,*代表需要转码的文档

unicodetranslate *  //将文档进行转码

基于官方给出的转码代码,当文件中包含不可转换字符时,将会导致转码不成功。此时,需要加上invalid,保证命令强制执行,即:

unicodetranslate *,invalid  //保证命令强制执行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。