zoukankan      html  css  js  c++  java
  • Graphics2D 中文乱码

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

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

    本地字体库位置:(winXP 宋体字)C:WINDOWSFontssimsun.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代码  收藏代码
    1. String message=“...”;//ws获取到的信息  
    2. new String(message.getBytes("utf8"),"gbk");  

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

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

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

    Java代码  收藏代码
    1. 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代码  收藏代码
    1. g2d.setFont(new Font("宋体", Font.PLAIN, 12));  

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

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

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

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

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

  • 相关阅读:
    「CF1039D」You Are Given a Tree
    「NOIP2016」换教室
    「NOIP2014」飞扬的小鸟
    「AMPPZ2014」The Prices
    POj-3104 Drying 二分+贪心
    HDOJ1312<DFS>
    STL入门2
    HDU1425 <sort 快排>
    2304: Lights Out(枚举)
    1018:放苹果(递归)
  • 原文地址:https://www.cnblogs.com/someonehere/p/4645560.html
Copyright © 2011-2022 走看看