我已经下载了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);
}
}
但是,当我拨打自己的电话号码时,我听到了沉默。控制台的呼叫日志显示问号而不是西里尔字符。
在解决这个问题方面,我将不胜感激。
答案 0 :(得分:2)
看来,您“只是”必须:
servletResponse.setCharacterEncoding("UTF-8");
.. or:
servletResponse.setContentType("text/xml; charset=UTF-8");
...因为默认值假定为ISO-8859-1。 (而且我对TwiML或IVR并不深入,但这似乎可以从根本上打破/修复东西(西里尔字母)。)
参考: