Graphics.drawString()方法画中文字符出现乱码怎么解决?(急)

XCoder_Studio 2009-08-17 10:10:39
我在用Graphics.drawString()方法时,出现了乱码,这个该怎么解决啊?
代码:
g.drawString("中文",100,100);
...全文
2196 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
XCoder_Studio 2009-08-19
  • 打赏
  • 举报
回复
呵呵~问题解决了,原来是字体的原因,谢谢各位的回复
sunzerui 2009-08-18
  • 打赏
  • 举报
回复
你先看一下,你的DOS下有没有中文乱码
如果有的话,按照2楼的改就可以了,或者是写一个注册表文件导入就可以了。
一般是这个问题。我之前也遇到过。
一头头 2009-08-18
  • 打赏
  • 举报
回复
用unicode哇

g.drawString("\u4e2d\u6587",100,100);


怎么把中文转换成unicode呢?

可以直接用下面的这个类

public class unicodeChanging {   
public static void main(String[] args) {
String s = "中文";
String tt = gbEncoding(s);
System.out.println(decodeUnicode(tt));
}


public static String gbEncoding(final String gbString) {
char[] utfBytes = gbString.toCharArray();
String unicodeBytes = "";
for (int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++) {
String hexB = Integer.toHexString(utfBytes[byteIndex]);
if (hexB.length() <= 2) {
hexB = "00" + hexB;
}
unicodeBytes = unicodeBytes + "\\u" + hexB;
}
System.out.println("unicodeBytes is: " + unicodeBytes);
return unicodeBytes;
}

public static String decodeUnicode(final String dataStr) {
int start = 0;
int end = 0;
final StringBuffer buffer = new StringBuffer();
while (start > -1) {
end = dataStr.indexOf("\\u", start + 2);
String charStr = "";
if (end == -1) {
charStr = dataStr.substring(start + 2, dataStr.length());
} else {
charStr = dataStr.substring(start + 2, end);
}
char letter = (char) Integer.parseInt(charStr, 16);
buffer.append(new Character(letter).toString());
start = end;
}
return buffer.toString();
}
}
yy357510564 2009-08-18
  • 打赏
  • 举报
回复
怎么样叫出现乱码啊
knightzhuwei 2009-08-17
  • 打赏
  • 举报
回复
参考http://www.javaeye.com/topic/254015

1、是否字符编码问题

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



Java代码
String message=“...”;//ws获取到的信息
new String(message.getBytes("utf8"),"gbk");

String message=“...”;//ws获取到的信息
new String(message.getBytes("utf8"),"gbk");

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



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

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



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

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

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) 通过验证程序,确定图片上的小方块正确显示为中文



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

java1109 2009-08-17
  • 打赏
  • 举报
回复
个人感觉是编码的问题
GGMMYQL 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiaozejun 的回复:]
这个问题正在学习中 过来向高手学习学习 帮顶  楼主解决问题后 请记得 详细讲一下解决方法 让我们也好好学习 哈哈哈哈
[/Quote]
你还真 傻!!!!
wcwtitxu 2009-08-17
  • 打赏
  • 举报
回复
可能是字体的原因
cml187364729 2009-08-17
  • 打赏
  • 举报
回复
可能是eclipse的编码设置问题,
gesanri 2009-08-17
  • 打赏
  • 举报
回复
没弄过,是不是字符编码的问题?在eclipse中设置如下:
windows->Preferences...打开"首选项"对话框,左侧导航树,导航到 general->Workspace,右侧Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧