docker alpine版本服务中显示中文
一、环境
宿主机:CentOS7.1
docker镜像:自己制作的tomcat 7+sun jdk 1.7+alpine
基础镜像
二、问题描述
由于java程序中引入了activiti组件,在activiti生成动态流程图时,中文字符显示占位符,如下图所示:
三、解决方法
1.首先activiti在生成流程图时,需要引入字符集,如“宋体”,看是否均已设置完毕。
InputStream imageStream = diagramGenerator.generateDiagram(bpmnModel, "png", highLightedActivitis,highLightedFlows,"宋体","宋体",null,null, 1.0);
2.在tomcat启动时,需要增加启动参数
-Dfile.encoding=UTF-8
3.程序中前后端展现都使用UTF-8格式,否则对于GB2312和UTF-8转换也会有问题
4.在启动的linux环境中修改LANG环境变量
#export LANG=zh_CN.UTF-8
5.增加alpine中“宋体”的字符集
5.1.首先在windows下或网上下载,找到“宋体”或使用字体的安装文件
windows下宋体字符集位置:C:\Windows\Fonts\SIMSUN.TTC
5.2.将此文件拷贝到alpine镜像中/usr/share/fonts/win/
(此文件夹随意指定,不过最好用此文件夹,后续说明)下,并赋权
#chmod a+r simsun.ttc
5.3.修改repositories源(alpine系统专用源文件在/etc/apk/repositories
),三组数据源选其中一组(一对)即可
#系统默认数据源,下载较慢
#http://dl-cdn.alpinelinux.org/alpine/v3.6/main
#http://dl-cdn.alpinelinux.org/alpine/v3.6/community#aliyun数据源
https://mirrors.aliyun.com/alpine/v3.6/main/
https://mirrors.aliyun.com/alpine/v3.6/community/# ustc数据源
https://mirrors.ustc.edu.cn/alpine/v3.6/main/
https://mirrors.ustc.edu.cn/alpine/v3.6/community/
5.4.alpine系统中安装font-adobe-100dpi
#apk update
fetch https://mirrors.aliyun.com/alpine/v3.6/main/x86_64/APKINDEX.tar.gz
fetch https://mirrors.aliyun.com/alpine/v3.6/community/x86_64/APKINDEX.tar.gz
fetch https://mirrors.ustc.edu.cn/alpine/v3.6/main/x86_64/APKINDEX.tar.gz
fetch https://mirrors.ustc.edu.cn/alpine/v3.6/community/x86_64/APKINDEX.tar.gz#apk add font-adobe-100dpi
(1/10) Installing encodings (1.0.4-r0)
(2/10) Installing font-alias (1.0.1-r1)
(3/10) Installing libfontenc (1.1.3-r1)
(4/10) Installing libpng (1.6.29-r1)
(5/10) Installing freetype (2.7.1-r1)
(6/10) Installing mkfontscale (1.0.7-r2)
(7/10) Installing mkfontdir (1.0.5-r1)
(8/10) Installing expat (2.2.0-r1)
(9/10) Installing fontconfig (2.12.1-r0)
(10/10) Installing font-adobe-100dpi (1.0.3-r0)
Executing busybox-1.26.2-r5.trigger
Executing mkfontscale-1.0.7-r2.trigger
Executing mkfontdir-1.0.5-r1.trigger
Executing fontconfig-2.12.1-r0.trigger
Executing glibc-bin-2.26-r0.trigger
5.5.此font-adobe-100dpi安装文件会在/usr/share/fonts中生成自己所需的文件夹,加载字体
#cd /usr/share/fonts
#mkfontscale(此步某些文档中说需要,我这里未使用)
#mkfontdir(此步某些文档中说需要,我这里未使用)
#fc-cache -f
#fc-list(查看所有字体)
至此alpine系统“宋体”字体安装完毕,再次生成activiti流程图时展示如下: