我有一个包含变音符号 (Ä/Ö) 的大型 csv 文件,我需要将其转换为 RSQLite 数据库以使用 dplyr 进行部分分析。但是,当我从数据库中读取数据时,变音符号无法正确重现。Ä 变成<c4>
Ö 变成<d6>
。read.csv
正确再现变音符号。
# Create test data
indata<-data.frame(var=c('Ä', 'Ö', 'ä', 'ö', 'ÄÄ_öö'))
write.table(indata, 'test.csv', sep=';', row.names = F, quote=F)
library(DBI)
library(RSQLite)
library(dplyr)
db <- dbConnect(RSQLite::SQLite(), dbname="test") # Create empty database
RSQLite::dbWriteTable(conn = db, name = "testData", # Save csv into database
value = "test.csv",
row.names = FALSE, header = T, sep=';',
colClasses='character')
dbDisconnect(db)
con<-src_sqlite(path='test', create=F)
outdata<-collect(tbl(con, 'testData'))
outdata2<-read.csv('test.csv')
outdata # mangled umlauts
outdata2 # correct umlauts
如何让 RSQLite 保留变音符号?
> sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=Finnish_Finland.1252 LC_CTYPE=Finnish_Finland.1252
[3] LC_MONETARY=Finnish_Finland.1252 LC_NUMERIC=C
[5] LC_TIME=Finnish_Finland.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] dplyr_0.5.0 RSQLite_1.1-2 DBI_0.5-1
loaded via a namespace (and not attached):
[1] magrittr_1.5 R6_2.2.0 assertthat_0.1 tools_3.3.2 tibble_1.2 memoise_1.0.0
[7] Rcpp_0.12.9 digest_0.6.12