R中

2017-06-18 50 views
0

我有以下問題轉換ASCII到UTF-8 stringi:R中

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" 

然後我嘗試:

stri_encode(x_1,"ASCII","UTF-8",to_raw=FALSE)==x_2 

但是,這仍然無法正常工作。也許有人可以建議如何使這兩個字符串相同(我試圖通過x_2合併x_1)。

回答

2

問題不在於轉換。問題是x_2的第一個字母是https://unicode-table.com/en/0420/

是清楚的,當你運行:

> 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 <- stri_replace_all_regex(x_2, parse(text = '\U00000420'), "P") 
x_1 == x_2_rep 
## TRUE 
+0

但是做什麼,如果我有很多這樣的字符串,即我有一個數據集與x_1和第二個與x_2和我想合併在x_2上,即我不知道事先會有後來的P – Vitalijs