求助:如何在图片里显示中文?
RedLinux 9, 区域为en,完全安装(所有软件包、语言、字体),能够正常浏览中文网站。
//JSP代码
<%@ page contentType= "image/jpeg; charset=gb2312 " %>
<%@ page import= "
java.io.*,
java.awt.*,
java.awt.image.*,
com.sun.image.codec.jpeg.* "%>
<%
//设置页面不缓存
response.setHeader( "Pragma ", "No-cache ");
response.setHeader( "Cache-Control ", "no-cache ");
response.setDateHeader( "Expires ", 0);
System.setProperty( "java.awt.headless ", "true ");
out.clear();
//创建内存图像
BufferedImage image = new BufferedImage(320, 240, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g = image.createGraphics();
g.setFont(new Font( "楷体_G2312 ", Font.PLAIN, 24));
String title = new String( "中文问题 ".getBytes( "ISO8859_1 "), "GB2312 ");
g.drawString(title, 50, 50);//显示????
g.drawString( "中文问题 ", 50, 150);//显示4个方框
g.dispose();
//输出到浏览器
javax.imageio.ImageIO.write(image, "JPEG ", response.getOutputStream());
%>
这些代码出来的图片,中文要么是4个问号,要么是4个方框。
查过其它的中文乱码问题,找不到,都是关于参数提交,或都从文件读取的。
有哪位大侠能指点指点?万分感激……
------解决方案--------------------在图像中画文字后,显示就是乱码?
那就可能是发送的BufferedImage中的数据还不是像素数据.不过你可以试一下先把BufferedImage用PixelGrabber转化成像素数据,然后再用MemoryImageSource把像素数据转化成图片,然后再把图片发送到浏览器,我想这样应该可以把图像显示出来.因为图片的像素数据显示与字符编码无关,就如在不支持中文的系统上显示含有中文的图片一样正常,因为里面根本就不是字符,而是一些像素的颜色值.
------解决方案--------------------g.setFont(new Font( "宋体 ", Font.PLAIN, 24));
------解决方案--------------------RedLinux 9上面我就不知道了,我用windows XP上面我试过可以的.
<%@ page contentType= "image/jpeg; charset=gb2312 " %>
<%@ page import= "
java.io.*,
java.awt.*,
java.awt.image.*,
com.sun.image.codec.jpeg.* "%>
<%
//设置页面不缓存
response.setHeader( "Pragma ", "No-cache ");
response.setHeader( "Cache-Control ", "no-cache ");
response.setDateHeader( "Expires ", 0);
System.setProperty( "java.awt.headless ", "true ");
out.clear();
//创建内存图像
BufferedImage image= new BufferedImage(320, 240, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g= image.createGraphics();
g.setFont(new Font( "楷体_G2312 ", Font.PLAIN, 24));
String title= new String( "中文问题 "); //这里后面不要了.
g.drawString(title, 50, 50);//显示????
g.drawString( "中文问题 ", 50, 150);//显示4个方框
g.dispose();
//输出到浏览器
javax.imageio.ImageIO.write(image, "JPEG ", response.getOutputStream());
%>
------解决方案--------------------"楷体_G2312 "这个字体在本地有吗?还有,引号里有个空格。。。