Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TwinML Java说:西里尔字母是不可读的_Java_Twilio_Twilio Api - Fatal编程技术网

TwinML Java说:西里尔字母是不可读的

TwinML Java说:西里尔字母是不可读的,java,twilio,twilio-api,Java,Twilio,Twilio Api,我已下载并对其进行了一些修改,以提供俄语语音响应(java文件的编码为UTF-8): 然而,当我拨打我的号码时,我听到了沉默。控制台的调用日志显示问号,而不是西里尔字母 如果您能帮我解决这个问题,我将不胜感激。看来,您“只是”不得不: …或: …因为默认值假定为ISO-8859-1。(我对TwiML或IVR没有深入了解,但这似乎在基本层面上解决了问题(西里尔文字) 参考文献: :) 请“尝试”在响应上显式设置字符集(UTF8)…并且可能更喜欢“应用程序/xml”而不是“文本/

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

然而,当我拨打我的号码时,我听到了沉默。控制台的调用日志显示问号,而不是西里尔字母

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

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

…或:

…因为默认值假定为ISO-8859-1。(我对TwiML或IVR没有深入了解,但这似乎在基本层面上解决了问题(西里尔文字)

参考文献:

  • :)

请“尝试”在响应上显式设置字符集(UTF8)…并且可能更喜欢“应用程序/xml”而不是“文本/xml”(以前暗示ASCII)…如果您有一个记录器(并且信任其utf-8功能:),请记录
响应。toXml()
。感谢@xerx593提供反馈。已尝试应用程序/xml-相同。Logger.getLogger(Logger.GLOBAL_Logger_NAME).log(Level.WARNING,response.toXml())打印预期的俄语字符串(Mac OS终端)。但有一件事我不明白:我正在使用printBytes()方法从中打印字符代码,并得到以下信息:
0xd0 0x9f 0xd1 0x80 0xd0 0xb8 0xd0 0xb2 0xd0 0xb5 0xd1 0x82
(应该是
0x04 0x1F 0x04 0x40 0x04 0x38 0x04 0x32 0x04 0x04 0x35 0x04 0x42
表示“П峈峈峈峈峈峈峈峈峈23752!(您的期望是utf16…),但是您:
servletResponse.setCharacterEncoding(“UTF8”)?(或等效的…)PS.将响应的内容类型恢复为
text/xml
——仍然可以正常工作。也就是说,这是响应的编码。
@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);
    }
}
servletResponse.setCharacterEncoding("UTF-8");
servletResponse.setContentType("text/xml; charset=UTF-8");