2016-04-27 1 views
1

Griff Ich habe ein Problem mit Codierung in R.Funktion dbReadTable in PostgreSQL R Paket kann nicht kodieren spezifische Zeichen

Code:

drv <- dbDriver("PostgreSQL") 
con <- dbConnect(drv, host="host", port=port, user="user", dbname="dbname") 

postgresqlpqExec(con, "SET client_encoding = 'windows-1250'") 

# read tables and assign to variables 
claims <- dbReadTable(con, c("schema","table_name")) 

Fehler (nach dem letzten Befehl):

Fehler in postgresqlExecStatement (conn, Anweisung, ...): RS-DBI-Treiber: (konnte das Ergebnis nicht abrufen: BłĄd: znak sekwencją bajtów 0xe2 0x80 0x91 kodowany w "UTF8" nie ma równoważnego w kodowaniu "WIN1250" ) Fehler bei Namen (raus) < - make.names (Namen (Out), einzigartig = TRUE): Versuch, ein Attribut auf NULL Zusätzlich zu setzen: Warnmeldung: In postgresqlQuickSQL (conn, aussage, .. ..): ExecuteSelect * von "Schema" "table_name"

überprüfte ich die Zeichen und es ist ähnlich (siehe http://www.utf8-chartable.de/unicode-utf8-table.pl?start=8064&names=-&utf8=0x dash) konnte nicht erstellt werden:

Unicode-Codepunkt = U + 2011 ; character = -; UTF-8 (hex.) = 0xE2 0x80 0x91

Ich habe auch versucht, das Problem auftritt, in denen Linien zu finden. Ich fand eine Zeile:

Mail // AC // Uszkodzenie pojazdu zaparkowanego przez osoby Trzecie // Nr szkody zew .: xxxx // użytkownik - Jan Kowalski -

+0

Können Sie bitte ein Beispiel Ihrer Daten zeigen. –

Antwort

1

Es ist nicht genau das, was Sie wollen, aber das könnte dein Problem lösen. Versuchen Sie Folgendes:

myEncode=function(x){ 
    #you may want to change this to source encoding. 
    #For me its 'latin1' 
    Encoding(x)="UTF-8" 
    return(x) 
} 

myReadTable= function(db,tab){ 
    myTable = dbReadTable(db,tab) 
    myTable=apply(myTable,2,myEncode) 
    return(myTable) 
}