代码:
g.drawString("中文",100,100);
11 个解决方案
#1
#2
没弄过,是不是字符编码的问题?在eclipse中设置如下:
windows->Preferences...打开"首选项"对话框,左侧导航树,导航到 general->Workspace,右侧Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。
windows->Preferences...打开"首选项"对话框,左侧导航树,导航到 general->Workspace,右侧Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。
#3
可能是eclipse的编码设置问题,
#4
可能是字体的原因
#5
你还真 傻!!!!
#6
个人感觉是编码的问题
#7
参考
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) 通过验证程序,确定图片上的小方块正确显示为中文
打印图片中文乱码问题到这里就解决了。
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) 通过验证程序,确定图片上的小方块正确显示为中文
打印图片中文乱码问题到这里就解决了。
#8
怎么样叫出现乱码啊
#9
用unicode哇
怎么把中文转换成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();
}
}
#10
你先看一下,你的DOS下有没有中文乱码
如果有的话,按照2楼的改就可以了,或者是写一个注册表文件导入就可以了。
一般是这个问题。我之前也遇到过。
如果有的话,按照2楼的改就可以了,或者是写一个注册表文件导入就可以了。
一般是这个问题。我之前也遇到过。
#11
呵呵~问题解决了,原来是字体的原因,谢谢各位的回复
#1
#2
没弄过,是不是字符编码的问题?在eclipse中设置如下:
windows->Preferences...打开"首选项"对话框,左侧导航树,导航到 general->Workspace,右侧Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。
windows->Preferences...打开"首选项"对话框,左侧导航树,导航到 general->Workspace,右侧Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。
#3
可能是eclipse的编码设置问题,
#4
可能是字体的原因
#5
你还真 傻!!!!
#6
个人感觉是编码的问题
#7
参考
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) 通过验证程序,确定图片上的小方块正确显示为中文
打印图片中文乱码问题到这里就解决了。
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) 通过验证程序,确定图片上的小方块正确显示为中文
打印图片中文乱码问题到这里就解决了。
#8
怎么样叫出现乱码啊
#9
用unicode哇
怎么把中文转换成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();
}
}
#10
你先看一下,你的DOS下有没有中文乱码
如果有的话,按照2楼的改就可以了,或者是写一个注册表文件导入就可以了。
一般是这个问题。我之前也遇到过。
如果有的话,按照2楼的改就可以了,或者是写一个注册表文件导入就可以了。
一般是这个问题。我之前也遇到过。
#11
呵呵~问题解决了,原来是字体的原因,谢谢各位的回复