Linux服务器JRE中文字体设置,解决java.awt乱码、显示方块问题

简介: 最近因为需要在java应用中合成曲线图,使用了jfreechart库,但是发现图片中的中文全都显示成方块了。Linux机器一般都是没有中文字体的,所以在使用java.awt相关类生成图片时,输出的中文很可能显示乱码或者呈方块状。解决方案就是在服务器启动脚本里,加上安装中文字体的步骤。

最近因为需要在java应用中合成曲线图,使用了jfreechart库,但是发现图片中的中文全都显示成方块了。
根据网络上的经验,在创建图表之前,先设置主题ChartFactory.setChartTheme(standardChartTheme);
或者设置字体时用setFont(Font font),发现也不能解决问题。
后来意识到是服务器本身缺少中文字体的问题,Linux机器一般都是没有中文字体的,所以在使用java.awt相关类生成图片时,输出的中文很可能显示乱码或者呈方块状。解决方案就是在服务器启动脚本里,加上安装中文字体的步骤:

  1. 安装字体到系统中。
  2. 在JRE目录下创建fonts/callback目录。
  3. 将Linux系统的字体目录作为JRE下面的字体目录连接。

对应Docker命令:

# 安装字体
RUN yum -y install wqy-microhei-fonts wqy-zenhei-fonts
RUN mkdir -p /opt/xxx/java/jre/lib/fonts/fallback
RUN ln -s /usr/share/fonts /opt/xxx/java/jre/lib/fonts/fallback

这里可以选择任意开源中文字体,我用了文泉译测试。

验证:

  1. 在改动之前先登录机器,进入目录/usr/share/fonts,可以看到下面只有dejavu字体库。
  2. 在docker脚本中添加上述命令后,重新部署到服务器上,该目录下多了字体库wqy-microhei 和 wqy-zenhei。
  3. 这时再触发生成图片的服务,中文正常显示。

屏幕快照 2020-03-17 15.56.26.png

目录
相关文章
|
3月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
107 9
|
3月前
|
缓存 监控 定位技术
|
4月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
231 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
28天前
|
弹性计算 安全 搜索推荐
阿里云国际站注册教程:阿里云服务器安全设置
阿里云国际站注册教程:阿里云服务器安全设置 在云计算领域,阿里云是一个备受推崇的品牌,因其强大的技术支持和优质的服务而受到众多用户的青睐。本文将为您介绍阿里云国际站的注册过程,并重点讲解如何进行阿里云服务器的安全设置。
|
3月前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
254 2
|
3月前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
|
3月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
206 3
|
3月前
|
监控 Kubernetes 安全
如何设置一个有效的远程管理工具来简化服务器的维护工作?
如何设置一个有效的远程管理工具来简化服务器的维护工作?
|
4月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
125 1
|
4月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
130 4