r - R中的unicode转换和导出

标签 r unicode

我在下面创建了一个脚本,用于将 unicode 转换为中文字符,即 temp.df[,"name_unicode"] 中的最后一个字符串是“§®£”(不带引号),让不懂中文的人也能帮忙。

library(RODBC)
library(Unicode)

temp.df <- data.frame(name_unicode=c("&#38515;&#22823;&#25991;",
                                     "&#38515;&#23567;&#25935;",
                                     "&#38515;&#19968;&#23665;",
                                     "&#167;&#174;&#163;"),
                      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 控制台没问题。但我需要将它们导出到 csvxls格式。我试过 write.csv , write.table , odbcConnectExcelRODBC但一切都给了我类似 <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/

相关文章:

ios - SQLite 中的越南语 Unicode 文本搜索

c++ - 无法将参数 1 从 WCHAR 转换为 const char *

Python3、pyodbc、SQL Server : Supplying Unicode and ANSI string as needed

r - 如何使用 `rstudioapi::insertText` 缩进

R 将列表变量分配给现有字符串

JavaScript utf8 编码或支持 Unicode 字母的正则表达式模式?

php - 打印 Unicode 字符 PHP

r - 在 R 中使用带有 map 数据的 ggplot 创建动画

r - 我可以在 RCpp 中动态地从 DataFrame 列创建向量吗

linux - Linux 下不支持 setGraphicsEventEnv() 吗?