【问题标题】:TwinML Java Say: Cyrillic letters are not readTwinML Java 说:西里尔字母不读
【发布时间】:2019-06-13 20:02:52
【问题描述】:

我已经下载了IVR for beginners tutorial 并对其进行了一些修改以提供俄语语音响应(java 文件的编码是 UTF-8):

@Override
protected void doPost(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
        throws IOException {
    VoiceResponse response = new VoiceResponse.Builder()
            .gather(new Gather.Builder()
                    .action("/menu/show")
                    .numDigits(1)
                    .build())
            .say(new Say.Builder("Привет")
                  .voice(Say.Voice.ALICE)
                  .language(Say.Language.RU_RU)
                  .build())
            .build();

    servletResponse.setContentType("text/xml");
    try {
        servletResponse.getWriter().write(response.toXml());
    } catch (TwiMLException e) {
        throw new RuntimeException(e);
    }
}

但是,当我拨打我的号码时,我听到了静音。控制台的通话记录显示问号而不是西里尔字符。

如果能帮助我解决这个问题,我将不胜感激。

【问题讨论】:

  • 请“尝试”在响应中显式设置字符集(UTF8)......也许更喜欢“application/xml”到“text/xml”(以前暗示 ASCII see ) ...如果您有记录器(并相信它的 utf-8 功能:),请记录 response.toXml()..
  • 感谢@xerx593 的反馈。尝试过的应用程序/xml - 相同。 Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.WARNING, response.toXml()) 打印预期的俄语字符串(Mac OS 终端)。但有些事情我不明白:我正在使用来自Byte Encodings and Strings 的 printBytes() 方法打印字符代码并得到以下信息:0xd0 0x9f 0xd1 0x80 0xd0 0xb8 0xd0 0xb2 0xd0 0xb5 0xd1 0x82(对于“Привет”应该是 0x04 0x1F 0x04 0x40 0x04 0x38 0x04 0x32 0x04 0x35 0x04 0x42
  • 字节没问题! (您的期望是 utf16 ...fileformat.info/info/unicode/char/041f/index.htm),但是您:servletResponse.setCharacterEncoding("UTF8");? (或等效的..stackoverflow.com/a/1849080/592355
  • P.S.将响应的内容类型恢复为 text/xml - 仍然可以正常工作。 IE。这是响应的编码。

标签: java twilio twilio-api


【解决方案1】:

看来,你“只是”不得不:

servletResponse.setCharacterEncoding("UTF-8");

..或:

servletResponse.setContentType("text/xml; charset=UTF-8");

...因为默认设置为 ISO-8859-1。 (而且我对 TwiML 或 IVR 并不深入,但这似乎在基本层面上破坏/修复了一些东西(西里尔字符)。)

参考:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    相关资源
    最近更新 更多