解决Graphics2D..drawString(message, px, py)的乱码问题
来源:互联网 发布:主域名和二级域名 编辑:程序博客网 时间:2024/05/06 19:31
昨天开始查找解决打印图片出现中文乱码的问题,今天终于搞定;写一下大致的经过,供遇到同样问题的人参考。
问题描述:
用户使用手机登录我们系统,在订购产品时,需要从服务器端下载一张图片,显示到手机屏幕上,该图片上可能包含中英文字符,视情况而定。 结果测试下来,英文没有问题,中文打印为方块。
环境描述:
开发平台为Win7,测试环境为linux。
数据来源:
用以打印到图片的信息通过Web serice从另一系统获取。
=====
下面说一下解决的思路,
1、是否字符编码问题
为了检查获取的字符串的编码是否正确,使用下面的方式尝试多种字符集编码的转换,但是都没有效果;
String message=“...”;//ws获取到的信息 new String(message.getBytes("utf8"),"gbk");
回过来仔细考虑了一下我们的系统,系统的jsp页面及数据库编码都是采用的utf-8编码,无论是录入、保存还是显示都没有出现中文乱码问题;尤其是系统之间多处使用ws方式同步数据,也没有出现乱码问题,于是认为ws获取到的信息同样是utf-8编码。为了验证这个想法,做了一个jsp页面,使用utf-8的方式显示获取到的信息,在不经过任何转换的前提下,正确显示中文。最终确定,不是字符集编码的问题。
2、是否打印过程发生了问题
查看了JDK API的说明,发现在使用字体的时候,我没有特别设定,使用了默认字体。写了一个简单的输出平台默认字体的类,得到的字体却是一样的信息:
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) 指定打印到图片的字体为中文
我的本地字体文件地址是“C:\WINDOWS\Fonts\simsun.ttc”,上传到服务器地址是:“/usr/jdk/instances/jdk1.5.0/jre/lib/fonts/simsun.ttc”
3) 通过验证程序,确定图片上的小方块正确显示为中文
打印图片中文乱码问题到这里就解决了。
考虑起来,因为打印字符成为图片,需要用到像素排列,如果字体不对,的确是没有办法打印啊。
- 解决Graphics2D..drawString(message, px, py)的乱码问题
- Linux下Graphics2D.drawString(message, px, py)乱码问题
- 解决Graphics2D drawImage图片失真的问题
- ImageIO drawString 中文乱码问题
- java Graphics2D绘制文字并居中并解决服务器乱码问题
- linux中Graphics2D 中文乱码的解决办法
- 解决web.py中模板中中文乱码问题
- 解决乱码的问题
- 乱码问题的解决
- 乱码问题的解决
- 乱码问题的解决
- 乱码问题的解决
- 乱码问题的解决
- 乱码问题的解决
- java DrawString 旋转问题
- C#的DrawString
- fmt:message 中文乱码问题
- jsp乱码问题的解决,java乱码
- rabbitMq设置引起的生产问题
- Cocos2d-x程序中的一些小细节
- 对技术的态度/编程修养(上)
- RTEMS 安装脚本
- 河南省第五届程序设计竞赛--最强 DE 战斗力
- 解决Graphics2D..drawString(message, px, py)的乱码问题
- 十四章--icloud(终结)
- Android数据库存取对象--CupBoard
- 备战蓝桥杯中
- poj 1037 A decorative fence ( dp+输出第k字典序)
- eclipse中java连接mysql步骤
- Unity3D Shader编程实践——“Hello Shader"
- c语言入门训练1.0
- Oracle修改用户口令