docker alpine版本服务中显示中文

作者: wencst 分类: docker,JAVA,云计算,微服务,架构设计 发布时间: 2017-11-23 09:54 阅读: 21,138 次

一、环境

宿主机: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流程图时展示如下:

 

如果文章对您有用,扫一下支付宝的红包,不胜感激!

欢迎加入QQ群进行技术交流:656897351(各种技术、招聘、兼职、培训欢迎加入)



Leave a Reply