我试图将输入文件中的一些字符串从UTF8转换为ASCII。 对于我提供的大多数字符串,
我已经创建了一个可重现的示例来展示我的问题,但我们需要找到一种方法让
以下是可重现性的示例:
玩弄代码后,我发现录入的“贝桑松”出现了问题,但是当我手动输入时,问题得到解决。考虑到无法修改输入文件,您认为确切的问题是什么?您有什么解决方法吗?
提前致谢。
编辑:
经过仔细检查,第一行字符中有一些奇怪的问题。似乎被 SO 的格式化所拿走了。 但为了再现它,我能给出的最好的是这两张图片描述它。第一张图片把我的光标放在 # 前面。 第二张图片是按下删除键后,应该会删除空格...结果删除了 "。因此,那里肯定有些奇怪的东西。
iconv()
可以完美地进行转换。 但是对于其中的一些字符串,它返回NA
。手动修复文件中的问题似乎是最简单的选项,但不幸的是,目前我根本没有这个选项。我已经创建了一个可重现的示例来展示我的问题,但我们需要找到一种方法让
iconv()
以某种方式转换s1
中的字符串,而不会得到NA
。以下是可重现性的示例:
s1 <- "Besançon" #as read from an input file I cannot modify
s2 <- "Paris"
s3 <- "Linköping"
s4 <- "Besançon" #Manual input for testing
s1 <- iconv(s1, to='ASCII//TRANSLIT')
s2 <- iconv(s2, to='ASCII//TRANSLIT')
s3 <- iconv(s3, to='ASCII//TRANSLIT')
s4 <- iconv(s4, to='ASCII//TRANSLIT')
I get the following output:
> s1
[1] NA
> s2
[1] "Paris"
> s3
[1] "Link\"oping"
> s4
[1] "Besancon"
玩弄代码后,我发现录入的“贝桑松”出现了问题,但是当我手动输入时,问题得到解决。考虑到无法修改输入文件,您认为确切的问题是什么?您有什么解决方法吗?
提前致谢。
编辑:
经过仔细检查,第一行字符中有一些奇怪的问题。似乎被 SO 的格式化所拿走了。 但为了再现它,我能给出的最好的是这两张图片描述它。第一张图片把我的光标放在 # 前面。 第二张图片是按下删除键后,应该会删除空格...结果删除了 "。因此,那里肯定有些奇怪的东西。
s1
转换为音译文字。将命令更改为s1 <- iconv(s1, to='ASCII//TRANSLIT')
可以按照要求工作。 - thorepetsub
时会发生什么?系统中的iconvlist()
是否与您本地的相同? - Chris无法转换的‘x’元素(可能是因为它们无效或无法在目标编码中表示)将返回为‘NA’,除非指定了‘sub’。
这似乎不太直观,考虑到您的s3
/
,但也许指定一个子目录,例如 sub = '/' 可以让您的不受控制的文件正常工作。这只是一个想法。 - Chris