假设我编写了一个解析包含德语的输入流的函数.下面是一个玩具示例.以下工作在我的机器上(因为UTF8是标准的):
readLines(textConnection("Zürich"))
readLines(textConnection("Z\u00FCrich")) #same thing
Run Code Online (Sandbox Code Playgroud)
但是,当我UTF-8不是当前的语言环境编码时,我想确保它也能正常工作.例如,在rApache中,默认为ascii.因此我传递了编码参数:
readLines(textConnection("Zürich", encoding="UTF-8"))
readLines(textConnection("Z\u00FCrich", encoding="UTF-8"))
Run Code Online (Sandbox Code Playgroud)
但实际上这会导致输出混乱.为什么是这样?我应该如何调用textConnection以确保在任何平台或区域设置上正确读取流?
@flodel的建议确实成功了:
readLines(textConnection("Z\u00FCrich", encoding="UTF-8"), encoding="UTF-8")
Run Code Online (Sandbox Code Playgroud)
然而,我从未明白为什么需要这样做.