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 基本级别的东西(西里尔字符)。)
参考文献:
- https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html
- https://javaee.github.io/servlet-spec/
- http://www.grauw.nl/blog/entry/489
- https://www.fileformat.info/info/unicode/char/search.htm
- https://www.twilio.com/docs/voice/twiml/say
- https://www.twilio.com/docs/voice/twiml/gather
- UTF8 or UTF-8?:)
- What's the difference between text/xml vs application/xml for webservice response
我已经下载了 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 基本级别的东西(西里尔字符)。)
参考文献:
- https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html
- https://javaee.github.io/servlet-spec/
- http://www.grauw.nl/blog/entry/489
- https://www.fileformat.info/info/unicode/char/search.htm
- https://www.twilio.com/docs/voice/twiml/say
- https://www.twilio.com/docs/voice/twiml/gather
- UTF8 or UTF-8?:)
- What's the difference between text/xml vs application/xml for webservice response