2013-06-03 55 views
0

我有文本框和一个按钮。我在文本框中输入日文字符如こんにちは。日文字符在Java中显示不正确

当我点击按钮电子邮件与文本框中的文本一起发送。

但是,当电子邮件收到它显示一些垃圾字符,而不是日文字符。

有谁能告诉我为什么会发生这种情况吗?

在此先感谢。

+0

你知道所使用的编码? – asteri

+0

显示用于构建邮件正文的代码 – fge

+0

String str = myEntity.getTextBoxValue(); StringBuilder strb = new StringBuilder(); strb.append(str); return strb.toString(); – user2448398

回答

1

您应该确保您使用的字符集支持日文字符,如Unicode。

例如,创建String对象时,有一个重载的构造中可以指定字符编码:将字符串转换为字节时

byte[] utf8Characters = { /* UTF-8 encoded characters */ }; 
String s = new String(characters, "UTF-8"); // Decode bytes using UTF-8. 

同样(即流数据时),可以使用:

byte[] utf8EncodedBytes = s.getBytes("UTF-8"); // Encode to UTF-8. 

如果不指定字符编码,它将默认为某些可能不支持所需字符的字符集。

Java Doc说: “默认字符集是在虚拟机启动时确定的,通常取决于底层操作系统使用的语言环境和字符集。”

+0

你好snipes83,谢谢你的回复。我按照你的建议尝试了一些东西,但我仍然看到垃圾粉丝。我尝试过,byte [] b = myEntity.getTextBoxValue()。getBytes(“UTF-8”); String value = new String(b,“UTF-8”); System.out.println(value); //它打印π??π??π?¬π??字符 – user2448398

+0

@ user2448398如果你的程序在打印由myEntity.getTextBoxValue()给出的字符串时给你垃圾,那么问题可能在于'myEntity'如何处理字符集编码。 “myEntity”代表什么? – Snps

+0

它只是保存在文本框中输入的值。公共类MyEntity {私人字符串textBoxValue; // getter,这个setter}。 – user2448398

0

我不是很确定,如果你使用的是Java servlet的,但如果你这样做,你可以试试这个

request.setCharacterEncoding("UTF-8");