楼主: smztsmzt
3708 1

[学习心得] 批量转换dta文件乱码 [推广有奖]

  • 0关注
  • 9粉丝

已卖:1516份资源

硕士生

4%

还不是VIP/贵宾

-

威望
0
论坛币
2984 个
通用积分
407.5325
学术水平
73 点
热心指数
72 点
信用等级
62 点
经验
1206 点
帖子
51
精华
0
在线时间
131 小时
注册时间
2011-4-7
最后登录
2025-3-17

楼主
smztsmzt 在职认证  发表于 2018-8-27 13:00:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
看连玉君老师的微信公众号文章《Stata15:一次性转码,解决中文乱码问题》,链接为:https://mp.weixin.qq.com/s/kaQZKqRMSQKXxstlANBHVg。文中连老师和李老师各自为实现批量转换文件乱码问题给出了相应的程序代码,其中连老师将命令封装为ua,使用了外部命令rcd实现,李老师采用infix和levelsof命令实现。结合两位老师的思路,现在给出另外一种实现目的的方法,相比两位老师的代码无需安装外部命令,也不受levelsof的数量限制,也无需将系统文件后缀名模式打开。循环遍历获取文件名的思路同时可以用于其它工作。代码供参考,有问题请指教,谢谢。
  1. cd "E:\My Data\ypp_command unicode" //需要批量转换的目录
  2. clear
  3. !dir /B /D > output.txt // !使用cmd模式下dir命令
  4.                                    // /B 使用空格格式
  5.                                    // /S 按大小排序
  6. file open handle_output using output.txt,read text
  7. file read handle_output opline
  8. while r(eof)==0 {
  9.   local oplinenum=`oplinenum'+1
  10.   if substr("`opline'",-3,3)=="dta" {
  11.      di         "`opline'"
  12.      unicode encoding set gb18030
  13.      unicode translate "`opline'",invalid
  14.   }
  15.   file read handle_output opline
  16. }
  17. file close handle_output
复制代码


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


已有 2 人评分学术水平 热心指数 信用等级 收起 理由
txje + 2 + 2 + 2 精彩帖子
Stakiny + 2 + 2 + 2 鼓励积极发帖讨论

总评分: 学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

沙发
smztsmzt 在职认证  发表于 2018-9-19 10:59:22
  1. local filenames: dir "." files "*.dta",respectcase
  2. foreach fn of local filenames {
  3.         di `"`fn'"'
  4.         unicode encoding set gb18030
  5.         unicode translate `"`fn'"',invalid
  6. }
复制代码


来一段更简洁的代码实现上述功能
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
txje + 2 + 2 + 2 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-31 13:45