有这种奇怪的行为stringr
,这真让我烦恼。stringr
在没有警告的情况下更改某些包含外来字符的字符串的编码,在我的例子中是 ø、å、æ、é 和其他一些...如果您str_trim
字符向量,那么那些带有外来字母的字符将被转换为新的编码。
letter1 <- readline('Gimme an ASCII character!') # try q or a
letter2 <- readline('Gimme an non-ASCII character!') # try ø or é
Letters <- c(letter1, letter2)
Encoding(Letters) # 'unknown'
Encoding(str_trim(Letters)) # mixed 'unknown' and 'UTF-8'
这是一个问题,因为我使用 data.table 来(快速)合并大表,并且 data.table 不支持混合编码,并且因为我找不到返回统一编码的方法。
有什么解决方法吗?
编辑:我以为我可以回到基本功能,但它们也不保护编码。paste
保留它,但不sub
例如。
Encoding(paste(' ', Letters)) # 'unknown'
Encoding(str_c(' ', Letters)) # mixed
Encoding(sub('^ +', '', paste(' ', Letters))) # mixed
stringr
正在改变编码,因为stringr
是一个包装器stringi
包,以及stringi
始终以 UTF-8 进行编码。看help("stringi-encoding", package = "stringi")
了解此设计选择的详细信息和解释。
避免合并时出现问题data.table
s,只需确保所有id
变量以 UTF-8 编码。你可以使用stri_enc_toutf8
in the stringi
包,或使用iconv
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)