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个方框。查过其它的中文乱码问题,找不到,都是关于参数提交,或都从文件读取的。有哪位大侠能指点指点?万分感激……
//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把像素数据转化成图片,然后再把图片发送到浏览器,我想这样应该可以把图像显示出来.因为图片的像素数据显示与字符编码无关,就如在不支持中文的系统上显示含有中文的图片一样正常,因为里面根本就不是字符,而是一些像素的颜色值.
<%@ 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());
%>