Stata 13:Windows 8 和 Mac OS X 中德语字符的编码

Stata 13: Encoding of German Characters in Windows 8 and Mac OS X

对于当前的项目,我使用了一些以 UTF8 格式保存的 csv 文件。这种编码的动机是它包含带有特殊字符 ä,ö,ü,ß 的德语信息。我的团队正在 Mac OS X 和 Windows 7 上使用 Stata 13(软件经常更新)。

当我们在Stata 中导入csv 文件时(导入时,我们选择Latin-1)特殊字符在两个操作系统上都正确显示。然而,当我们将数据集导出到 Mac OS X 上的另一个 csv 文件时——我们需要在我们的设置中经常这样做——特殊字符被替换,例如ä -> Š、ü -> Ÿ 等。在 Windows 上,导出非常有效,特殊字符不会被替换。

疑难解答:Stata 13 无法解释 unicode。在将它导入 Stata 之前,我尝试使用 Sublime Text 2 将 utf8 文件转换为 windows1252 和 latin 1 (iso 8859-1) 编码(因为毕竟它包含的都是德语字符)。然而,同样的问题仍然存在 Mac OS X.

昨天,Stata 14 发布,显然可以处理 unicode。如果这是原因,那么它可能会帮助解决我的问题,但是,我们将无法很快升级。除此之外,我想知道为什么问题出现在 Mac 而不是 Windows?谁能帮忙?谢谢。

[编辑开始] 当我使用 "Mac Roman" 文本编码再次导入导出的 csv 文件时(Stata 允许在导入对话框中指定),然后我德国特殊字符再次出现。从 this thread 的外观来看,显然我不是唯一遇到此问题的人。但是,因为我需要处理导出的 csv 文件,所以我仍然需要解决这个问题。 [编辑结束]

[EDIT2 Start] 一个例子是单词 "Bösdorf" 被更改为 "Bšsdorf"。在原始文件中,十六进制代码是 42c3 b673 646f 7266,而导出文件中的十六进制代码是 42c5 a173 646f 7266。[EDIT2 End]

在错误得到修复之前,您可以使用

解决此问题
iconv -f utf-8 -t cp1252 <oldfile.csv | iconv -f mac -t utf-8 >newfile.csv

这将撤消错误的转码,显然 Stata 中的导出功能在内部执行。

根据您的指标,cp1252 似乎是个不错的猜测,但也可能是 cp1254。如果您无法理解,更多示例可能有助于解决问题(要测试的常见德语字符仍然包括 ä 和大写变音符号、德语双 s 连字 ß 等)。

Stata 13 及以下版本在 Mac OS X 中使用已弃用的语言环境,macroman(Mac OS X 是 unicode)。我通常使用 StatTransfer 来转换,例如,从 Excel (unicode) 到 Stata (Western, macroman; Options->Encoding options) 的西班牙语。这是拥有 á、é 等的唯一方法。此外,Stata 14 导入 unicode 没有问题,但坚持导出 es_ES(西班牙语西班牙)作为默认语言环境,必须在导出命令的末尾有一个可读的 Excel 文件。