You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取含中文字符的.dta文件时出现编码错误

解决Pandas读取含中文.dta文件的编码乱码问题

我之前也踩过类似的Stata中文编码坑,给你几个亲测有效的思路:

  • 先检测文件的实际编码
    咱们猜的gb系列编码不一定准确,可以用chardet库自动检测文件编码,步骤很简单:

    1. 先安装chardet:pip install chardet
    2. 运行检测代码:
      import chardet
      
      with open('你的文件路径.dta', 'rb') as f:
          detect_result = chardet.detect(f.read())
      
      print("检测到的编码:", detect_result['encoding'])
      

    拿到结果后,把这个编码值传给pandas的read_stata的encoding参数试试,比如检测到是utf-8,就用pd.read_stata("file.dta", encoding="utf-8")。

  • 换用pyreadstat库读取
    Pandas的read_stata在编码兼容上有时候不够灵活,专门处理Stata文件的pyreadstat库对中文编码的支持要好很多:

    1. 安装库:pip install pyreadstat
    2. 读取代码:
      import pyreadstat
      
      df, meta_data = pyreadstat.read_dta('你的文件路径.dta', encoding='utf-8')
      
      如果utf-8不行,换成检测到的编码试试,大部分情况下这个方法能搞定乱码。
  • 用Stata先转码再读取
    如果上面两种方法都没效果,可以试试用Stata本身把文件转成UTF-8编码:
    打开Stata加载你的.dta文件,执行命令:

    saveold "转码后的文件名.dta", replace encoding(utf-8)
    

    之后用Pandas读取转好的文件,直接pd.read_stata("转码后的文件名.dta")基本就能正常显示中文了。

另外补充个小提醒:有些非常老旧的Stata文件可能用的是Windows系统默认的GBK编码,如果chardet检测不准,可以手动试试encoding="gbk",说不定能解决问题。

内容的提问来源于stack exchange,提问作者Jiahui Zhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:06:34