在R中将ASCII转换为UTF-8字符串

在R中将ASCII转换为UTF-8字符串,r,utf-8,ascii,stringi,R,Utf 8,Ascii,Stringi,我有以下问题: library(stringi) x_1<-"P N001361/01" x_2<-"Р N001361/01" x_1==x_2 [1] FALSE > stri_enc_mark(x_1) [1] "ASCII" > stri_enc_mark(x_2) [1] "UTF-8" 但这仍然不起作用。也许有人可以建议如何使这两个字符串相同(我正在尝试将x_1与x_2合并)。问题不在于转换。问题是x_2is的第一个字母 当您运行时,这一点很清楚: >

我有以下问题:

library(stringi)
x_1<-"P N001361/01"
x_2<-"Р N001361/01"
x_1==x_2
[1] FALSE

> stri_enc_mark(x_1)
[1] "ASCII"
> stri_enc_mark(x_2)
[1] "UTF-8"

但这仍然不起作用。也许有人可以建议如何使这两个字符串相同(我正在尝试将x_1与x_2合并)。

问题不在于转换。问题是
x_2
is的第一个字母

当您运行时,这一点很清楚:

> stri_encode(x_2,"UTF-8", "ASCII",to_raw=FALSE)
[1] "\032 N001361/01"
Warning message:
In stri_encode(x_2, "UTF-8", "ASCII", to_raw = FALSE) :
  the Unicode codepoint \U00000420 cannot be converted to destination encoding
因此,您需要显式地将字符转换为实际字母“p”


x_2_rep但如果我有很多这样的字符串,我该怎么办,即我有一个数据集带有x_1,第二个数据集带有x_2,我想在x_2上合并,即我事先不知道会有后面的PI出现此错误:解析错误(text=”“)::1:1:意外
> stri_encode(x_2,"UTF-8", "ASCII",to_raw=FALSE)
[1] "\032 N001361/01"
Warning message:
In stri_encode(x_2, "UTF-8", "ASCII", to_raw = FALSE) :
  the Unicode codepoint \U00000420 cannot be converted to destination encoding
x_2_rep <- stri_replace_all_regex(x_2, parse(text = '\U00000420'), "P")
x_1 == x_2_rep
## TRUE