我有文本框和一个按钮。我在文本框中输入日文字符如こんにちは。日文字符在Java中显示不正确
当我点击按钮电子邮件与文本框中的文本一起发送。
但是,当电子邮件收到它显示一些垃圾字符,而不是日文字符。
有谁能告诉我为什么会发生这种情况吗?
在此先感谢。
我有文本框和一个按钮。我在文本框中输入日文字符如こんにちは。日文字符在Java中显示不正确
当我点击按钮电子邮件与文本框中的文本一起发送。
但是,当电子邮件收到它显示一些垃圾字符,而不是日文字符。
有谁能告诉我为什么会发生这种情况吗?
在此先感谢。
您应该确保您使用的字符集支持日文字符,如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说: “默认字符集是在虚拟机启动时确定的,通常取决于底层操作系统使用的语言环境和字符集。”
你好snipes83,谢谢你的回复。我按照你的建议尝试了一些东西,但我仍然看到垃圾粉丝。我尝试过,byte [] b = myEntity.getTextBoxValue()。getBytes(“UTF-8”); String value = new String(b,“UTF-8”); System.out.println(value); //它打印π??π??π?¬π??字符 – user2448398
@ user2448398如果你的程序在打印由myEntity.getTextBoxValue()给出的字符串时给你垃圾,那么问题可能在于'myEntity'如何处理字符集编码。 “myEntity”代表什么? – Snps
它只是保存在文本框中输入的值。公共类MyEntity {私人字符串textBoxValue; // getter,这个setter}。 – user2448398
我不是很确定,如果你使用的是Java servlet的,但如果你这样做,你可以试试这个
request.setCharacterEncoding("UTF-8");
你知道所使用的编码? – asteri
显示用于构建邮件正文的代码 – fge
String str = myEntity.getTextBoxValue(); StringBuilder strb = new StringBuilder(); strb.append(str); return strb.toString(); – user2448398