【问题标题】:Sending Japanese text in sms and email通过短信和电子邮件发送日语文本
【发布时间】:2019-02-27 20:33:01
【问题描述】:

我需要在触发某些事件时发送短信和电子邮件。 当我用英语测试时,它工作正常。但是当我将文本更改为 Japanese 时,它会产生某种垃圾信息。我使用 java 作为我的编程语言。

我尝试了一些解决方案,例如更改字符集首选项并在运行配置中添加 -Dfile.encoding=UTF8,但似乎不起作用。

它在特定情况下不起作用。 当我将 java 类中的字符串硬编码为日语字符串时,它工作正常。但是当我尝试从属性文件中读取时,它会产生一些垃圾字符。

【问题讨论】:

  • 这里是之前的问题链接 "stackoverflow.com/questions/6271582/…" ;这可能会有所帮助..
  • 为了发送邮件,你需要设置类似这样的mimetype header,mimeMessage.setHeader("Content-Type", "text/plain; charset=UTF-8");对于发送短信,您通常需要查看短信服务提供商的文档。仅通过在标头中设置 utf8 有时不起作用,因为它取决于服务器实现
  • 属性文件默认采用 ISO8859-1 编码。你逃脱了日文字符吗?您是如何阅读属性文件的?
  • @Henry :我正在使用 spring 的“Value”注释直接从属性文件中读取值
  • 然后确保属性文件只包含 ISO8859-1 字符。对其他人使用 unicode 转义。查看docs.oracle.com/javase/8/docs/technotes/tools/unix/… 以帮助进行转换。

标签: java android smsmanager cjk


【解决方案1】:

我终于解决了这个问题。正如我在问题本身中所述,问题主要在于读取 .property 文件。当我尝试对字符串进行硬编码时,它运行良好。

正如@Henry 在他的 cmets 中所建议的,所有 .property 文件仅包含 ISO8859-1 字符。所以,我按照流程从 ISO8859-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);
        }

它解决了这个问题,而无需使用任何技巧将一个字符集转换为另一个字符集。

【讨论】:

    猜你喜欢
    • 2011-02-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多