starsnowfire

  • 2017年9月30日
  • 注册于 2017年9月22日
  • yihui
    在rstudo下,运行
    tsyp_batch<-read.dbf("e://jilu.dbf")
    这一行代码,Windows里获得的表中,能正常显示中文。centos中运行上述语句,Windows中显示中文的位置,显示的是类似于<ea><bd>的字符。

  • 程序在Windows下,用rstudio运行,读取dbf数据文件中的数据,用ggplot2画图,正常运行,没有问题。
    后准备移植到centos中的shiny-server中。
    但是在centOS7下,安装shiny-server,在局域网的其他电脑上输入http://<ip地址>:3838/sample-apps运行系统自带的示例程序运行正常,只有移植过来的这个程序,报错如下:
    error:输入的多字节字符串1有错。
    用rstudio直接运行,也是报同样的错误。
    经检查,应该是dbf文件代码的问题。在windows下,读取gbk代码的文件没问题。centos下读取出错。
    在发这个帖子之前,在google搜索了很多方法,均不能解决。
    甚至尝试用iconv对文件进行代码转换(gbk>utf8),发现转换后完全不能读取,报读取错误。
    centos系统中,用locale查看字符集,gbk和UTF-8也都有。
    搜索了众多资料,终于找到本网站。
    在此,提出疑问,怎么样在不对数据库编码变更的情况下,在centOS的shiny-server上运行?
    此部分代码如下:

    library(foreign)#导入read.dbf的函数库 read.dbf在此库中
    library(ggplot2)#导入ggplot2函数库
    server <- function(input, output) {
      output$plot <- renderPlot({
      #以下代码导入数据库文件并转换时间轴和数据轴格式
      tsyp_batch<-read.dbf("e://jilu.dbf")

    在 <https://stat.ethz.ch/R-manual/R-devel/library/foreign/html/read.dbf.html> 这个页面里查询,获得的信息太少。
    不知道描述的是不是清楚。