【问题标题】:Stata 13: Encoding of German Characters in Windows 8 and Mac OS XStata 13:Windows 8 和 Mac OS X 中德语字符的编码
【发布时间】:2015-04-09 08:04:07
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 错误导出的字符如何表示?您是否得到文字 Unicode CAPITAL S WITH CARON 或带有组合 caron 的常规 S(这是 Mac 上的正常形式)?另请参阅CAPITAL Y WITH TREMA 和(咳咳)cdn.rawgit.com/tripleee/8bit/master/encodings.html
  • 对不起我的无知:我如何才能确定?链接页面上的字符确实看起来与从 Stata 生成的完全一样,是的。请记住,Stata 将 csv 导入为 latin 1(尽管原始源编码是 utf8)。我认为输出也是 latin 1。 mac 上的 latin 1 有什么问题吗?
  • 文件中的实际字节数会有所不同。简短样本的十六进制转储将是有益的。有关一些提示,另请参阅character-encoding tag wiki
  • 所以我再次编辑了我的帖子,以包含出现问题的示例的十六进制代码。感谢您向我指出这一点。

标签: unicode utf-8 character-encoding stata


【解决方案1】:

在错误得到修复之前,您可以解决此问题

iconv -f utf-8 -t cp1252 <oldfile.csv | iconv -f mac -t utf-8 >newfile.csv

这会撤消不正确的转码,显然 Stata 中的导出功能在内部执行。

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

【讨论】:

  • 什么是“大写变音符号”?除了 U+0345 COMBINING GREEK YPOGEGRAMMENI 单独之外,组合字符没有大小写。当然 U+0308 COMBINING DIAERESIS 没有,U+00A8 DIAERESIS 也没有。
  • @tchrist 哦,我指的是 Ü、Ä 和 Ö 的大写版本。
  • 哦,你的意思是 U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS 之类的。 Unicode 6.0 有 34 个被认为是大写的代码点,其分解形式包含 U+0308 COMBINING DIAERESIS
  • 是的,但只有这三个可能会自然出现在德语文本中,尤其是在原始来源采用某些旧版 8 位编码的情况下。
  • @triplee 从 mac 转换为 utf-8 成功了。感谢您的帮助!
【解决方案2】:

Stata 13 及更低版本在 Mac OS X 中使用不推荐使用的语言环境,macroman(Mac OS X 是 unicode)。例如,我通常使用 StatTransfer 将西班牙语从 Excel(unicode)转换为 Stata(Western,macroman;Options->Encoding options)。这是拥有á、é等的唯一方法。此外,Stata 14 可以毫无问题地导入 unicode,但坚持将 es_ES(西班牙西班牙)导出为默认语言环境,必须在导出末尾添加命令 locale UTF-8命令以获得可读的 Excel 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 2010-10-09
    • 2012-12-27
    • 1970-01-01
    • 2011-08-18
    • 2013-11-28
    相关资源
    最近更新 更多