java graphics2d 乱码_Graphics2D 中文乱码[通俗易懂]

今天遇到了一个乱码问题,合成的小票图片上的中文全部变成了口口口,后来在网上查了资料,发现是Graphics2D用了宋体字,而linux服务器上没有对应的字体库。把本地的字体库上传上去就解决了。本地字体库位置:(winXP宋体字)C:\WINDOWS\Fonts\simsun.ttcsimsun.ttc改名为simsun.ttfrz命令(需提前装,其它方式也行)复制到linux:/usr/ja…

大家好,又见面了,我是你们的朋友全栈君。

今天遇到了一个乱码问题,合成的小票图片上的中文全部变成了口口口,后来在网上查了资料,发现是Graphics2D用了宋体字,而linux服务器上没有对应的字体库。

把本地的字体库上传上去就解决了。

本地字体库位置:(winXP 宋体字)C:\WINDOWS\Fonts\simsun.ttc

simsun.ttc 改名为 simsun.ttf

rz命令(需提前装,其它方式也行)复制到linux:/usr/java/jdk1.7.0_79/jre/lib/fonts/

参考文档:http://ember319.iteye.com/blog/254015

以下为原文内容

问题描述:

用户使用手机登录我们系统,在订购产品时,需要从服务器端下载一张图片,显示到手机屏幕上,该图片上可能包含中英文字符,视情况而定。 结果测试下来,英文没有问题,中文打印为方块。

环境描述:

开发平台为WinXP,测试环境为Solaris10。

数据来源:

用以打印到图片的信息通过Web serice从另一系统获取。

=====

下面说一下解决的思路,

1、是否字符编码问题

为了检查获取的字符串的编码是否正确,使用下面的方式尝试多种字符集编码的转换,但是都没有效果;

Java代码  0dabeb09fc38da2a0ee3d1253855fd5a.png

String message=“…”;//ws获取到的信息

new String(message.getBytes(“utf8″),”gbk”);

回过来仔细考虑了一下我们的系统,系统的jsp页面及数据库编码都是采用的utf-8编码,无论是录入、保存还是显示都没有出现中文乱码问题;尤其是系统之间多处使用ws方式同步数据,也没有出现乱码问题,于是认为ws获取到的信息同样是utf-8编码。为了验证这个想法,做了一个jsp页面,使用utf-8的方式显示获取到的信息,在不经过任何转换的前提下,正确显示中文。最终确定,不是字符集编码的问题。

2、是否打印过程发生了问题

查看了JDK API的说明,发现在使用字体的时候,我没有特别设定,使用了默认字体。写了一个简单的输出平台默认字体的类,得到的字体却是一样的信息:

Java代码  0dabeb09fc38da2a0ee3d1253855fd5a.png

Default font:java.awt.Font[family=Dialog,name=Dialog,style=plain,size=12]

于是到网上查找“java drawString 中文乱码” 关键字信息,查找csdn的一条信息:http://topic.csdn.net/u/20080603/13/3590c1f9-30bc-4e4d-bb2a-ada472b05973.html。大家可以去看一下,我就不贴过来了。我的动作是:

1) 指定打印到图片的字体为中文

Java代码  0dabeb09fc38da2a0ee3d1253855fd5a.png

g2d.setFont(new Font(“宋体”, Font.PLAIN, 12));

2) 上传WinXp 中的宋体字体文件到服务器(Solaris)

我的本地字体文件地址是“C:\WINDOWS\Fonts\simsun.ttc”,上传到服务器地址是:“/usr/jdk/instances/jdk1.5.0/jre/lib/fonts/simsun.ttc”

3) 通过验证程序,确定图片上的小方块正确显示为中文

打印图片中文乱码问题到这里就解决了。

考虑起来,因为打印字符成为图片,需要用到像素排列,如果字体不对,的确是没有办法打印啊。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129003.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idm下载百度网盘有限制 提示403错误 下载显示没有权限404,最新的解决办法教程

    idm下载百度网盘有限制 提示403错误 下载显示没有权限404,最新的解决办法教程近期idm下载百度网盘速度在20k/s-50k/s左右,针对这个问题,在2020年10月25日,百度网盘直链提取作者更改了下载接口,速度又能达到nm/s了。user-agent需要更改为netdisk没有了下载数的限制,可以尽可能把下载线程拉高以提高下载速度,服务器可以不填写了,支持同时下载多个文件,不会再提示403错误了以下为测试截图我用的是校园网,每秒接近三M已经很快了,一百多M的视频几秒钟就完事儿了,还是很赞的!如果大家喜欢今天的推文的话,希望大家支持一下小编,点个在看啥的,谢谢大家!今

    2022年6月16日
    104
  • 百度网站链接怎么分享_url的组成部分有哪些

    百度网站链接怎么分享_url的组成部分有哪些百度分享默认分享的是当前页的url,但也可以在同一个页面中分享多个不同的url,仅需进行如下简单的配置。默认的代码如下:其实是有很多隐藏的参数的:’bdDes’:’您的自定义分享摘要’, //’请参考自定义分享摘要”text’:’您的自定义分享内容’, //’请参考自定义分享内容”title’:’您的自定义pop窗口标题’, //’请参考自定义p

    2022年10月8日
    0
  • java学生成绩管理系统

    java学生成绩管理系统/**@——环创移动端课后作业——*@copyrightbylzyon2016/4/12.*@name:java学生成绩管理系统.*@功能:学生相关信息,录入,查询,统计,修改等….*@PS:图形界面的学生管理系统不要求就不做了.*/importjava.util.Scanner;importjava.lang.*;importja

    2022年7月13日
    15
  • CentOS 6安装gcc 4.7[通俗易懂]

    CentOS 6安装gcc 4.7

    2022年2月22日
    42
  • java分布式框架_5个强大的Java分布式缓存框架推荐

    java分布式框架_5个强大的Java分布式缓存框架推荐在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦。本文主要是分享了5个常用的Java分布式缓存框架,这些缓存框架支持多台服务器的缓存读写功能,可以让你的缓存系统更容易扩展。1、Ehcache–Java分布式缓存框架Ehcache是一个Java实现的开源分布式缓存框架…

    2022年6月5日
    24
  • 4.4.2分类模型评判指标(一) – 混淆矩阵(Confusion Matrix)

    4.4.2分类模型评判指标(一) – 混淆矩阵(Confusion Matrix)简介混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法。一句话解释版本:混淆矩阵就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个表里展示出来。这个表就是混淆矩阵。数据分析与挖掘体系位置混淆矩阵是评判模型结果的指标,属于模型评估的一部分。此外,混淆矩阵多用于判断分类器(Classifier)的优劣,适用于…

    2022年5月14日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号