Bu mükemmel bir yanıt değil, ancak aşağıdaki geçici çözüm benim için sorunu çözdü. Ben davranış veya R anlamak ve örnek yapmaya çalıştım benim R komut Windows ve Linux platformu üzerinde her ikisi de aynı sonuçlar üretir, böylece:
(1) internetten UTF-8 XML verilerini alın
library(XML)
url <- "http://hydrodata.info/chmi-h/cuahsi_1_1.asmx/GetSiteInfoObject?site=CHMI-H:1263&authToken="
doc <- xmlRoot(xmlTreeParse(url, getDTD=FALSE, useInternalNodes = TRUE))
infoList <- xmlToList(doc[[2]][[1]])
siteName <- infoList$siteName
(2) internetten metni yazdır: Kodlama R konsolunda UTF-8, ekran olan Çek ve Windows üzerinde İngilizce yerel ikisini de kullanarak da doğrudur:
> Sys.getlocale(category="LC_CTYPE")
[1] "English_United States.1252"
> print(siteName)
[1] "Koryčany nad přehradou"
> Encoding(siteName)
[1] "UTF-8"
>
(3) Bir data.frame oluşturmayı ve görüntülemeyi deneyin. Bunun bir sorunu var. yanlış hem RStudio görünümde ve konsolunda data.frame görüntüler:
df <- data.frame(name=siteName, id=1)
df
name id
1 Korycany nad prehradou 1
(4) yerine, bir matris kullanın deneyin. Şaşırtıcı bir şekilde matris R konsolunda doğru şekilde görüntülenir.
m <- as.matrix(df)
View(m) #this shows incorrectly in RStudio
m #however, this shows correctly in the R console.
name id
[1,] "Koryčany nad přehradou" "1"
(5) Yerel ayarı değiştirin. Windows'daysam, yerel ayarı Çek'e ayarlayın. Unix veya Mac'deysem, yerel ayarı UTF-8 olarak ayarlayın. Not: RStudio komut dosyasını çalıştırdığımda bu bazı sorunlar vardır, görünüşe göre RStudio her zaman hemen Sys.setlocale komutuna tepki vermiyor.
(7) Verileri bir metin dosyasına yazın. ÖNEMLİ: write.csv
kullanmayın, bunun yerine write.table
kullanın. Yerel bilgisayarım İngilizce Windows'umda Czech
olduğunda, write.table
numaralı telefondan fileEncoding="UTF-8"
'u kullanmalıyım. Şimdi metin dosyası, notepad ++ ve ayrıca Excel'de doğru şekilde ortaya çıkıyor.
write.table(m, "test-czech-utf8.txt", sep="\t", fileEncoding="UTF-8")
(8) tekrar orijinal
için yerel ayarlama
Sys.setlocale("LC_CTYPE", original.locale)
(9) geri R. NOT içine metin dosyasını okumak için deneyin: dosyayı okudum, ben encoding
ayarlamak zorunda parametre (NOT fileEncoding!). Dosyadan oku data.frame ekran hala yanlıştır, ama bu benim data.frame
bir matrix
dönüştürmek Çek UTF-8 karakter korunur:
data.from.file <- read.table("test-czech-utf8.txt", sep="\t", encoding="UTF-8")
#the data.frame still has the display problem, "č" and "ř" get "lost"
> data.from.file
name id
1 Korycany nad prehradou 1
#see if a matrix displays correctly: YES it does!
matrix.from.file <- as.matrix(data.from.file)
> matrix.from.file
name id
1 "Koryčany nad přehradou" "1"
Yani öğrenilen ders ı dönüştürmek için ihtiyaç vardır Benim data.frame
için bir matrix
, benim veriyi bir dosyaya Çek karakterleriyle yazmadan önce yerel ayarımı Czech
(Windows'ta) veya UTF-8
(Mac ve Linux'ta) olarak ayarlayın.Sonra dosyayı yazdığımda, fileEncoding
'un UTF-8 olarak ayarlanması gerektiğinden emin olmalıyım. Diğer yandan dosyayı daha sonra okuduğumda, İngilizce yerel ayarında çalışmaya devam edebilirim, ancak read.table
'da encoding="UTF-8"
'u ayarlamalıyım.
Daha iyi bir çözümü varsa, önerilerinizi kabul ederim.
Bulunduğunuz yeri CZ olarak değiştirebilir ve bu şekilde düzeltebilir misiniz? Bana – thelatemail
kısmi bir çözüm olarak: Sys.setLocale (yerel = "Çek") 'R. Koryčany nad přehradou'' olarak doğru data.frame görüntülemek için 'Ancak şimdi' write.csv (df kullandığınızda, "Test .csv ")' ve test.csv'yi Excel veya Notepad'de açın, metin şu şekilde görünecektir: 'Koryèany nad pøehradou' csv dosyasında. Sorunu çözmenin tek yolu, csv dosyasını Notepad ++ 'da açmak ve dosyanın Windows-1250'ye kodlamasını değiştirmekti. – jirikadlec2
Bunun tam olarak bir kopyası olduğuna ikna olmadım. Diğer bir soru, bir veri sorununa odaklanıyor gibi gözüküyor, ki bu aslında verinin depolanmasını değiştiriyor gibi görünüyor - önceki iki kopya - http://stackoverflow.com/questions/17715956/why-do-some-unicode-characters -düzenlemede-matrisler-ama-olmayan-veri-kareler-in-r? lq = 1 – thelatemail