4

我正在使用Stata 12。我遇到了以下问题。insheet我正在使用该命令将一堆 .csv 文件导入 Stata 。数据集可能包含俄语、克罗地亚语、土耳其语等。我认为它们是用“UTF-8”编码的。在 .csv 文件中,它们是正确的。我把它们导入Stata后,原来的字符串不正确,变成了奇怪的字符。你能帮我解决这个问题吗?Stat-Transfer 能解决问题吗?它是否支持 .csv 格式?

例如,原始文件是这样的: 在此处输入图像描述

我的代码是这样的:insheet using name.csv, cn save name.dta,replace

结果是这样的: 在此处输入图像描述

而且我尝试在字体选项中调整脚本,但不起作用。

4

2 回答 2

2

正如@Nick Cox 之前评论的那样,问题在于Stata 不支持Unicode/UTF-8 编码。不,StatTransfer 不能解决问题(请参阅此说明)。

您可以使用在线解码器或 MS Word 来解决问题。让我们先用一种语言来做,比如你的截图中的俄语。查看您拥有的克罗地亚语、土耳其语和其他语言的正确编码。

  1. 将 .csv 文件中的字符串变量保存为纯文本 (.txt),选择 UTF-8 编码选项。
  2. 编码转换:
    • 使用@Dimitriy V. Masterov 建议的 iconv,或者
    • 使用在线工具,例如:上传.txt文件,选择源编码为UTF-8,输出编码根据感兴趣的语言(俄语为CP1251),点击“转换”按钮保存输出文件, 或者
    • 如果您有 MS Office,您也可以将 MS Word 用于相同目的。右键单击 .txt 文件,选择“打开方式...”,选择使用 MS Word 打开。在出现的窗口中,确认文件编码为“Unicode (UTF-8)”,打开,然后点击“另存为...”,另存为纯文本。在新出现的窗口中,选择“Cyrillic (Windows)”并标记“插入换行符”。节省。
  3. 检查您的新 .txt 文件 - 它仍然应该有一些奇怪的字符(如 ÌßÑÎÊÎÌÁÈÍÀÒ)但现在 Stata 可以正确显示它们。
  4. 在Stata数据编辑器中复制粘贴新的字符串变量,右键单击变量,选择“Font...”,然后字符串“Cyrillic”。您应该在数据编辑器和结果窗口中的屏幕上看到正确的名称(即使字符串本身是完整的)。
    Stata 中的 CP1251 编码示例

根据您的操作系统,您可能需要先安装所有适当的语言。
希望能帮助到你。

于 2013-10-27T10:20:25.200 回答
1

更新答案:从版本 14 开始,所有 Stata 都支持 Unicode。即结果、帮助文件、do 文件、ado 文件、数据标签等。

这并不能帮助用户限制访问 14 之前的 Stata 版本,而是一种解决方案。使用 OP 的示例:

. insheet using "/home/Alexis/Desktop/data.csv"
(3 vars, 4 obs)

. ed

. list

     +------------------------------------------------------------------------------+
     |         v1    v2                                                          v3 |
     |------------------------------------------------------------------------------|
  1. | RU00040778   RUS                                  ПРAЙCBOTEРXAУCKУПEРC AУДИT |
  2. | RU00044434   RUS                                                        КПMГ |
  3. | RU00044428   RUS                                               Эрнст энд Янг |
  4. | RU00044428   RUS   Аудиторско-консулбтационная группа Раэвитие Биэнес-систем |
     +------------------------------------------------------------------------------+
于 2022-02-02T00:51:43.207 回答