UTF-8 fichier de sortie dans la R
Je suis en utilisant R 2.15.0 sur Windows 7 64 bits. Je tiens à la sortie de l'unicode (CJK) du texte dans un fichier.
Le code suivant montre comment un caractère Unicode envoyé à écrire sur un fichier UTF-8 connexion ne fonctionne pas comme (I) attendu:
rty <- file("test.txt",encoding="UTF-8")
write("在", file=rty)
close(rty)
rty <- file("test.txt",encoding="UTF-8")
scan(rty,what=character())
close(rty)
Comme illustré par la sortie de scan:
Read 1 item
[1] "<U+5728>"
Le fichier n'a pas été écrit avec l'UTF personnage lui-même, mais une sorte de norme ANSI-conforme de secours. Puis-je le faire fonctionner correctement la première fois (c'est à dire avec un fichier texte qui a "在" dans ce lieu), ou puis-je travailler supplémentaire de la magie pour convertir la sortie d'Unicode avec le bon caractère de remplacement de la chaîne de code?
Grâce.
[Plus d'info: le même code se comporte correctement dans Cygwin, R 2.14.2, tandis que 2.14.2 sur Win7 est également cassé. Est-ce sur ma fin, quelque part?]
peut-être que ce post de l'aide.
OriginalL'auteur Patrick | 2012-05-20
Vous devez vous connecter pour publier un commentaire.
La problème est en raison de certaines R-Windows spéciale comportement (à l'aide de la valeur par défaut du système de codage /ou en utilisant un système de fonctions d'écriture; je ne connais pas les détails, mais le comportement est effectivement connu)
Pour écrire du texte le codage UTF8 sur Windows on doit utiliser la
useBytes=T
options dans des fonctions comme writeLines ou readLines:Trouverez ici un vraiment bien écrit l'article en Kevin Ushey: http://kevinushey.github.io/blog/2018/02/21/string-encoding-and-r/ aller dans beaucoup plus de détails.
OriginalL'auteur petermeissner
Enregistre des chaînes UTF-8 dans le fichier texte:
fait ce travail pour vous à la fin?
Non, j'ai fini par le faire manuellement à l'aide de notepad++. J'ai seulement besoin de le faire qu'une fois pour les fichiers dans un même ensemble de données et il a été plus rapide pour mordre la balle et la faire manuellement alors de garder de jouer avec la R fichier encodage.
OriginalL'auteur beloblotskiy
Pour ceux qui viennent sur cette question plus tard, voir le stringi paquet (https://cran.r-project.org/web/packages/stringi/index.html). Il comprend de nombreuses fonctions pour permettre la cohérence, de la croix-plate-forme de chaîne UTF-8 soutien dans R. les Plus pertinents pour ce thread, le stri_read_lines(), stri_read_raw(), et stri_write_lines() les fonctions peuvent constamment d'entrée/sortie de l'UTF-8, même sur Windows.
OriginalL'auteur Brenton Wiernik
Je pense que vous êtes d'avoir des problèmes parce que
write
est construit de sorte qu'il prend la nom d'un objet et vous ne semblent pas avoir de construire un objet nommé. Essayez plutôt ceci:OriginalL'auteur 42-
J'ai ce genre de problème avec des chaînes UTF-8 qui viennent de DB.
Le seul moyen que j'ai trouvé pour les enregistrer correctement est l'enregistrement du fichier en mode binaire.
OriginalL'auteur beloblotskiy