Stata 连享会 主页 || 视频 || 推文 || 知乎 || Bilibili 站
温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc
,ihelp
,rdbalance
,gitee
,installpkg
⛳ Stata 系列推文:
于翔 (1026281310@qq.com)
连玉君 (arlionn@163.com)
目录
一句话的事儿: 如果你试了各种现有方法都无法解决 Stata 的中文乱码问题,或许可以试一下如下命令 (真正的命令只有最后一行):
⭕ 特别提示: 转码有风险!转码前务必备份你的原始文件,确认转码无误后再考虑删除原始文件。
. clear // 转码前务必先清空内存,否则会提示错误信息
. cd "D:\data" // 待转换数据所在文件夹, 请务必事先备份一份数据
*-转码命令 1:转换当前工作路径下的所有文件
. unicode retranslate *, invalid(ignore) transutf8 nodata replace
2021/8/5 9:45
补充 (by 连玉君)
思路: 利用连玉君老师编写的 ua
前缀命令实现对所有「子文件夹」的遍历,以便实现深层转码。
. ssc install ua // 下载批量操作命令
*-转码命令 2:遍历所有子文件夹
. ua: unicode retranslate *, invalid(ignore) transutf8 nodata replace
思路:
renfiles
命令把 .tex
或 .md
类型的文件的后缀修改为 Stata 格式的文件的后缀,比如 .ado
,.do
或 .sthlp
格式等;ua: unicode ...
转码;提示:
.ado
或 .do
文档,请不要再选择这两类后缀。基本原则是:所选的 Stata 文档后缀与目标文件夹下的所有文件后缀都不同。.ado
, .do
, .mata
, .txt
, .csv
, .sthlp
, .class
, .dlg
, .idlg
, .ihlp
, .smcl
, .stbcal
。这些后缀名都可以被 unicode 转码,参见 help unicode translate
文档中的说明.ihlp
或 .idlg
作为中转后缀名。ssc install renfiles // 下载外部命令
cd "D:\data" // 设定目标文件路径
*-1 把 .tex 文件转换为 .ado 文件
local AA ".tex"
local BB ".ihlp"
ua: renfiles, subs(*) insign(`AA') outsign(`BB') erase
*-2 批量转码为 UTF-8
ua: unicode retranslate *, invalid(ignore) transutf8 nodata replace
*-3 把 .ado 文件转换为 .tex 文件
ua: renfiles, subs(*) insign(`BB') outsign(`AA') erase
*-4 删除 Stata 转码产生的备份文件夹 (可选)
* 使用 DOS 命令 rd
ua: !rd /s/q bak.stunicode
下面是详细介绍 (如果你的问题已经解决,就不用看了)
Stata 中文转码问题很难有一个让所有人满意的通用解法,对于我这样的 Stata 小白用户,一般是采取 case by case 的原则,以下是我最近处理 CGSS 数据过程中遇到的中文乱码问题和解决方法。在「Stata 学习-连享会」QQ 群中 (QQ 号:225012362) 讨论后,连老师鼓励我把处理过程记录下来分享给大家,于是形成了这篇小文。
本文使用的版本是 Stata15,其中,CGSS 数据源于经管之家。
按照 Stata 官方的介绍,我们通常采用如下命令来转换 Stata 13 以前生成的文件:
clear //转码的时候数据不能打开
cd "D:\data" //设置工作路径, 填入存放待转换数据的文件路径
*-开始转码
unicode analyze *//任何文件类型
unicode encoding set gb18030
unicode translate *
上述命令只能转换当前工作路径下的文件,对于子孙文件夹下的文件就无能为力了。
此时可以使用连玉君老师之前编写的 ua
以及 uall
(项目地址:https://gitee.com/arlionn/uall ),一次性转换当前工作路径下的所有文件夹及子孙文件夹中的文件。
可以看到,并没有完全转码。Stata 提示 File not translated because it contains unconvertable characters,
变量标签也是乱码:
此时,变量标签 label 乱码问题并没有解决,根据 Stata 的提示信息,把最后一行改成:
unicode retranslate *, invalid
此时,我们附加了 invalid
选项,转码结果如下
完成上述操作后,大部分汉字乱码以及显示正常了,还是有个别带中文的数据产生乱码,如图
这时,Stata 会推荐如下命令:
unicode translate "CGSS2012.dta", transutf8
unicode retranslate "CGSS2012.dta", transutf8
我试过,但没什么用。
最终,我采用如下命令顺利解决了问题:
*-路径设定
. clear //执行下面的命令之前务必先清空内存,否则会提示错误信息
. cd "D:\data" //存放待转换数据的路径, 请务必事先备份一份数据
*-转码
. unicode retranslate *, invalid(ignore) transutf8 nodata replace
最终效果如下图所示:
导致转码失败或者不完全的原因有很多,如果读者没时间了解 Stata 的深层架构,希望本文可以作为一种即用的方法惠及更多人。
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2 小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh