我需要在某些事件触发时发送短信和电子邮件。 当我用英语测试时,它工作正常。但是,当我将文本更改为日语时,它会产生某种垃圾消息。我正在使用Java作为编程语言。
我尝试了一些解决方案,例如更改字符集首选项并在运行配置中添加-Dfile.encoding=UTF8
,但似乎不起作用。
在特定情况下不起作用。 当我将java类中的字符串硬编码为日语字符串时,它可以正常工作。但是,当我尝试从属性文件读取文件时,它会产生一些垃圾字符。
答案 0 :(得分:0)
最后我解决了这个问题。正如我在问题本身中所指出的那样,问题主要出在读取 .property 文件中。当我尝试对字符串进行硬编码时,它可以正常工作。
正如@Henry在他的评论中建议的那样,所有.property文件仅包含ISO8859-1
个字符。因此,我遵循了从I SO8859-1 format to UTF.
转换字符串的过程
只需使用这一行代码即可实现。
String utf8String = new String(Charsets.ISO_8859_1.encode("your string").array()).
尽管它解决了我的目的,但是我认为这不是解决问题的干净方法。 对于我的场景,我必须添加一个新配置,而不是通过上述方式。我将字符串保存在单独的文本文件中,然后从文件中读取。
String filePath = "filename.txt"
try {
BufferedReader br = new BufferedReader(new FileReader(filePath));
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append("\n");
line = br.readLine();
}
return sb.toString();
} catch (FileNotFoundException e) {
log.error("file not found ", e);
} catch (IOException e) {
log.error("Error occurred ", e);
}
它无需使用任何破解程序即可将一个CharSet转换为另一种字符集即可解决该问题。