我在下面创建了一个脚本,用于将 unicode 转换为中文字符,即 temp.df[,"name_unicode"]
中的最后一个字符串是“§®£”(不带引号),让不懂中文的人也能帮忙。
library(RODBC)
library(Unicode)
temp.df <- data.frame(name_unicode=c("陳大文",
"陳小敏",
"陳一山",
"§®£"),
stringsAsFactors=FALSE)
temp.df[,"name_unicode_mod"] <- sapply(temp.df[,"name_unicode"],
function(x) {
temp <- unlist(strsplit(x,";"))
temp <- sprintf("%x",as.integer(gsub("[^0-9]","",temp)))
temp <- intToUtf8(as.u_char_range(temp))
return(temp)
})
write.csv(temp.df,file("test.csv",encoding="UTF-8"),row.names=FALSE)
temp.df[,"name_unicode_mod"]
的输出R 控制台没问题。但我需要将它们导出到 csv
或 xls
格式。我试过 write.csv
, write.table
, odbcConnectExcel
在 RODBC
但一切都给了我类似 <U+00A7><U+00AE><U+00A3>
的东西.任何人都可以帮忙吗?谢谢。
附言我正在使用 R 3.0.0 和 Win7
最佳答案
使用二进制写入将适用于您的情况。
下面是一个小示例代码。
writeUtf8csv <- function(x, file) {
con <- file(file, "wb")
apply(x, 1, function(a) {
b <- paste(paste(a, collapse=','), '\r\n', sep='')
writeBin(charToRaw(b), con, endian="little")
})
close(con)
}
更多详情见this reference page .
关于r - R中的unicode转换和导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16028658/