linux系统Java程序生成图片中文乱码
Posted 泡沫幻影
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统Java程序生成图片中文乱码相关的知识,希望对你有一定的参考价值。
1.先查看系统字体
locale -a |grep zh
2.修改系统字符集
临时修改(当前终端生效): export LANG="zh_CN.UTF-8" 永久修改:
把
export LANG="zh_CN.UTF-8"加入系统文件
/etc/proflile 最后位置
使其生效
source /etc/profile
windows系统可以在C:\\Windows\\Fonts找到对应的字体
链接:https://pan.baidu.com/s/19I-T1tjjwpo0JHxNmDG7tA
提取码:1234
把下载的字体上传到/usr/share/fonts文件夹中
我下载的是simsun字体,
把simsun.ttc和simsunb.ttf上传到/usr/share/fonts文件夹中
把字体上传到jdk安装目录的jdk8/jre/lib/fonts/的fallback目录下
如果没有fallback文件夹,可以创建。
注意:没有这一步有些字可能显示不全
重启Java程序
windows下中文正常,Linux下乱码
由于项目需要我重写了getWriter(),并定义ByteArrayOutputStream()字符集编码为“GBK”在window下生成的静态页面能正常显示中文!后面放到Linux上部署,可能是Linux默认是utf-8的编码于是出现乱码,把字符集编码改为“UTF-8”生成的静态中文HTML页面,但是改成“utf-8”后在window下生成的静态中文页面又变成乱码,我只能改为“GBK”编码!请教大家有什么办法可以让我只用一种字符集编码就可以让项目在两种系统上面正常部署!!谢谢了
我只能说这个项目你应该重做。所有内部处理一律用 UTF8 ,包括你开发时所有数据也都用 UTF8写。Wndows 用英文版的服务器。或者在输出数据时,都做一次编码转换。
重做的最主要是重新检查所有的输入输出函数。都调用编码转换函数,这个转换函数检测系统版本作处理(哪怕作 GBK->GBK 这种无意义的转换工作)。
Windows 的编码混乱问题确实不好解决,你可以事实让服务器发送编码信息,编码用 UTF8 ,则样浏览器端默认就用 UTF8 就没乱码了。 参考技术A 统一用UTF-8生成,不要用GBK。并定义ByteArrayOutputStream()字符集编码为“UTF-8” 参考技术B 使用该命令:
iconv -f gbk -t utf8 文件名 > 重命名 参考技术C 应该是要做编码识别 或者系统识别,然后再设定相应的编码集 参考技术D 编码不同的问题
以上是关于linux系统Java程序生成图片中文乱码的主要内容,如果未能解决你的问题,请参考以下文章