打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ustrto函数将RTF中文乱码打回原形

stata13版本可以完美的实现在stata界面编写RTF文档,在之前的推文我们曾介绍过,详见关于RTF你不知道的命令关于RTF你不知道的命令之番外篇等。但若使用stata14版本,输出中文字符到RTF文档会出现乱码的现象,如:


clear all

set more off

tempname handle

rtfopen `handle' using c:/rtf/mytable.rtf,replace

file write `handle' '{\pard\b This is 实证研究结果\par}' _n

rtfclose `handle'

以上命令在stata14中用rtfopen命令创建一个名为mytablertf文档,用file write写入“This is 实证研究结果”这句话,可以发现只有中文部分出现了乱码。这是由于RTF文档可以识别stata13版本使用的gb2312中文编码,但无法识别 stata14版本使用的UTF-8 编码。


要解决stata14版本输出RTF文档的中文乱码问题,就需要对中文内容进行转码,即将UTF-8编码转为RTF文档可以识别的gb2312编码。ustrto()函数可以帮我们做到这一点。

基本语法:ustrto(s,enc,mode)


顾名思义,ustrto ()= UTF-8 String to… 它可以将以UTF-8编码的unicode字符串”s”转化为其他编码格式。在语法中,”enc”即表示需要转化成的其他编码格式;”mode”可以用来设置不被编码”enc”所支持的Unicode字符的处理方式,其取值可为1234,通常我们设置mode取值为1


比如将”café”这个字符串转为ascii编码,但字符“é”ascii无法支持的,”mode”的不同取值就代表处理”é”的不同方法:


01

mode取值为1,用编码的“替换字符”替换é”, ascii编码的替换字符为”char(26)”。char(26)实际上是一个控制字符,在stata中无法显示,只能显示为下图的小方框)



02

mode取值为2,跳过任何不受支持的字符。


03

mode取值为3,在第一个不受支持的字符处停止,只返回一个空字符串。


04

mode取值为4,用unicode转义字符替换”é”


因此,在stata14中,用ustrto()将”This is 实证研究结果字符串转化为gb2312编码后再写入RTF文档,即可解决实证研究结果中文内容乱码的问题。


那么,如何将file write命令和ustrto函数结合使用呢?只需将file write命令编辑的字符串s写成 `=ustrto(“s”,”enc”,”mode”)’的形式即可。(注意,ustrto部分要使用宏的引号 ` ’ 括起来)


命令如下:

clear all

set more off

tempname handle

rtfappend `handle' using c:/rtf/mytable.rtf, replace

file write `handle' '{\pard\b `=ustrto('This is 实证研究结果','gb2312',1)'\par}' _n

rtfclose `handle'

如上图所示,中文乱码的问题已经解决。


在之前的推文中,我们也曾介绍过用esttab输出实证研究结果到RTF文档:esttab命令输出回归分析结果到RTF文档。如果想为每个实证研究结果添加标题,可以用file write编辑,但更为简便的方法是,直接使用esttab命令的“title” 功能。title(string),括号里添加标题名即可。但如果标题中含有中文,在stata14中也会出现乱码现象,这时候结合使用ustrto()函数同样可以解决乱码问题。


sysuse auto, clear

estpost summarize price mpg rep78 foreign, detail

esttab using c:/rtf/mytable.rtf, title(`=ustrto('描述性统计结果','gb2312',1)’) cells('count mean(fmt(3)) p50 sd(fmt(2)) min max ') noobs append

如果想将字符串转为UTF-8编码的格式,可以使用ustrfrom()函数,用法和ustrto类似,有兴趣的读者可以通过help来进一步了解~

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。


应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

文字编辑:强宇曦

技术总编:刘贝贝



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
phpgd库中文乱码的产生与解决方法详解 || mao的博客
二招搞定Word文档中的乱码
一网打尽中文编码转换
页面跳转乱码解决之道
URL编码与解码
浏览器乱码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服