2017-06-18 4 views
0

J'ai le problème suivant:Conversion ASCII à stringi UTF-8 dans 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" 

J'essayer:

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

Mais cela ne fonctionne toujours pas. Peut-être que quelqu'un peut suggérer comment rendre ces deux chaînes identiques (j'essaie de fusionner x_1 par x_2).

Répondre

2

Le problème ne concerne pas la conversion. La question est la première lettre de x_2 est https://unicode-table.com/en/0420/.

qui est clair lorsque vous exécutez:

> 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 

Par conséquent, vous devez convertir explicitement le caractère à la lettre réelle « P »

x_2_rep <- stri_replace_all_regex(x_2, parse(text = '\U00000420'), "P") 
x_1 == x_2_rep 
## TRUE 
+0

Mais que faire si j'ai beaucoup de ces chaînes, à savoir J'ai un jeu de données avec x_1 et le second avec x_2 et je veux fusionner sur x_2 ie je ne sais pas ex ante qu'il y aura le P plus tard – Vitalijs