【问题标题】:Encoding of German umlauts when using readOGR使用 readOGR 时对德语变音符号进行编码
【发布时间】:2016-04-25 23:50:30
【问题描述】:

我正在尝试使用 rgdal 包提供的 readOGR 函数读取 OGR 矢量图,但我在使用德语变音符号时遇到了一些问题。我提供了一个小例子来说明数据的样子,像 ö 这样的变音符号被替换为 \303\266

map <-readOGR("/path/to/data.gdb", layer = "layer")
map@data$name
# [1] L\303\266rrach
# [2] Karlsruhe
# [3] B\303\266blingen
# [4] ...

我尝试在 readOGR 函数(readOGR(dsn = "/path/to/data.gdb", layer = "layer", encoding = "UTF-8"readOGR(dsn = "/path/to/data.gdb", layer = "layer", encoding = "LATIN-1")中指定编码,但看起来它完全忽略了编码参数,因为每种编码都得到相同的结果我试过了。有谁知道我如何获得 readOGR 函数或 R 来显示正确的德语变音符号?

【问题讨论】:

  • 你是在 Windows 机器上吗?
  • 我在 Debian 8 服务器上运行 RStudio 服务器。
  • 很奇怪。我正在读取一个带有 utf8 编码的 geojson/shp 文件,并且 R 中的显示被搞砸了。如果我使用 utf8 编码(均从 QGIS 导出)通过 csv 文件读取相同的数据,一切都很好。有人递给我一把枪。

标签: r encoding rgdal


【解决方案1】:

朱利安是对的。

file_name <- "../gis_data/bw/AX_KommunalesGebiet.shp"
shape_kommunal <- readOGR(file_name, layer = "AX_KommunalesGebiet", use_iconv = TRUE, encoding = "UTF-8")
data_kommunal <- shape_kommunal@data
head(data_kommunal)

正确返回字符串:

  GKZ                NAME
0 08236074           Kämpfelbach
1 08425052           Grundsheim
2 08435067           Deggenhausertal

【讨论】:

    【解决方案2】:

    如果 iconv 未设置为 TRUE,则忽略编码参数。

    【讨论】:

      【解决方案3】:

      我不太确定encoding = "UTF-8/LATIN-1/..." 会做什么。我原以为您会选择一种且仅一种编码方案。在我的机器上,我确实看到了八进制字符到 o-umlaut 的翻译:

      > 'B\303\266blingen'
      [1] "Böblingen"
      > 'L\303\266rrach'
      [1] "Lörrach"
      

      要查看 R 字符的各种约定,请键入:

      ?Quotes
      

      除了编码之外,还需要在所使用的字体中包含字符。控制台显示中使用的字体似乎没有正确的 o-umlaut 映射。我的默认字体是 Courier。您还应该检查您的语言环境设置。 ?Sys.getlocale

      【讨论】:

      • 我想表明我在阅读 OGR 矢量图时使用了不同的编码。我用 UTF-8 读过一次,用 LATIN-1 读过一次,等等。至于你的回答,这有点奇怪,我得到了不同的结果。 'B\303\266blingen' # "B\303\266blingen"
      • 这就是问题所在。 Sys.getlocale() 给出了当前使用“C”的信息,我用 Sys.setlocale() 将其更改为支持 UTF-8 的语言环境,现在 'L\303\266rrach' 正确显示为“Lörrach”。跨度>
      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 2020-12-04
      • 1970-01-01
      相关资源
      最近更新 更多