TwinML Java 说:不读西里尔字母

TwinML Java Say: Cyrillic letters are not read

我已经下载了 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);
    }
}

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

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

看来,您 "just" 必须:

servletResponse.setCharacterEncoding("UTF-8");

..或:

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

...因为默认值为 ISO-8859-1。 (而且我对 TwiML 或 IVR 并不深入,但这似乎 break/fix 基本级别的东西(西里尔字符)。)

参考文献: