我已经阅读了有关 Shiny 编码问题的线程和包更新,但我有一个(难以重现示例)数据库驱动的 Shiny 应用程序,它正在摸索一些特殊字符。
在我的 postgresql 数据库中,我正确地看到了我的瑞典河流,“Upper Umeälven River”,当我使用 dplyr 将其过滤回 Shiny 界面时:
names.rivers <- filter(tbl.rivers, Country == "Sweden")
...变成 R 语言中的“Upper Umeälven River”。
我在本地使用UTF-8编码;我想我在与数据库的交换中丢失了一些东西。
Sys.getlocale()
[1] "LC_COLLATE=French_France.1252;LC_CTYPE=French_France.1252;LC_MONETARY=French_France.1252;LC_NUMERIC=C;LC_TIME=French_France.1252"
再次抱歉缺少示例,这只是从数据库中提取的问题。我怀疑我在某个地方缺少某些清理功能的标志,但需要一些帮助来指出正确的方向。
最佳答案
在您的 code page 1252 Windows Latin 1 中Upper Umeälven River
中“ä”的渲染为代码点 0xE4(二进制 11100100)。
同一代码页中的 Upper Umeälven River
有两个八位字节 0xC3A4 (XXX00011 XX100100)。
但是,如果您考虑 UTF-8 encoding rules码点的有效位完全相同。
某个地方发生了无意或错误的字符编码,将字符转置为 UTF-8,但仍认为该字符串具有 Windows Latin 1 代码页。
也许数据已以 UTF-8 格式接收,您可以将代码页更改为接收代码页以反射(reflect)这一点。更远的地方可能正在发生一场无声的转变,但没有任何迹象表明这一点。
关于database - 字符编码,带有数据库的 dplyr (postgresql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38872770/