CentOS 下 RStudio Server 中 knitr 与 TeXLive

首先安装 TeXLive,用 DVD 或者网络安装都可以,在安装时最好选择创建符号连接,这样不用再手动修改 PATH。组件的部分,我的习惯是去除多余的语言支持,保留 CJK 基本组件和中文。

装好之后,需要配置中文字体,CentOS 自带文泉驿和思源黑体,用下面的命令安装:

如果还需要其他字体,比如非常漂亮的 Adobe 字体集(Adobe 仿宋、Adobe 黑体、Adobe 宋体等,Adobe Acrobat 自带),就给每个字体建立一个目录,然后 cp 到 /usr/share/fonts 中。

在全部字体装完后,为了让 XeLaTeX 可以使用系统字体,按官方文档的做法,将 TEXMFSYSVAR/fonts/conf/texlive-fontconfig.conf 复制到 /etc/fonts/conf.d/09-texlive.conf,对 TeXLive 2015,就是

然后执行

为了知道系统中有哪些中文字体可用,可以执行下面的命令

会将中文字体名称输入到 zhfont.txt,然后使用每行冒号前的名称即可(中英文名称都试一下)。

对 RStudio 来说,使用 RMarkdown,如果需要输入中文,在同目录新建文件如 cjk_header.tex,内容如下:

然后在 .Rmd 文件的文件头 output 的 pdf_document 处加入 includes 和 latex_engine 字段,如下:

这时再进行 Knit,就可以显示中文了。

MariaDB/MySQL 数据库中文乱码初探

MariaDB 架设在 Windows Server 2008 R2 上,用 Oracle VirtualBox 架设 CentOS 虚拟机安装 RStudio Server,同时本地 Windows 7 运行 RStudio。

我尝试了不同的组合,分别在 CentOS 和 Windows 上写入和读取含有中文的表格,并用 SET NAMES gbk/utf8 改变编码,结果发现没有一种组合可以同时完成读取和写入的工作……

所做的尝试如下:

服务器/数据库 写入/读取 CentOS Windows
utf8/utf8
写入 OK Error
读取 utf8 gbk
utf8/gbk
写入 Error OK
读取 utf8 gbk
gbk/utf8
写入 OK Error
读取 utf8 OK
utf8/utf8
写入 Error OK
读取 utf8 OK

后面会再研究 MariaDB 字符编码传输实现细节,看是否能够统一。