Javascript 如何在Twilio SMS请求中指定unicode消息正文?

Javascript 如何在Twilio SMS请求中指定unicode消息正文?,javascript,unicode,twilio,Javascript,Unicode,Twilio,,它们现在在RESTful SMS接口中支持unicode字符。然而,我不清楚如何在Javascript中利用这一点(这是在Node中) 当我发送带有西班牙语翻译的短信(默认为UTF-8)时,该短信会在收件人手机上被切碎为三条短信。我猜根本原因是我需要在请求中发送一个unicode消息体 如何将Javascript字符串转换为unicode?我尝试了一个字符一个字符的翻译 function toUnicode(theString) { var unicodeString = ''; fo

,它们现在在RESTful SMS接口中支持unicode字符。然而,我不清楚如何在Javascript中利用这一点(这是在Node中)

当我发送带有西班牙语翻译的短信(默认为UTF-8)时,该短信会在收件人手机上被切碎为三条短信。我猜根本原因是我需要在请求中发送一个unicode消息体

如何将Javascript字符串转换为unicode?我尝试了一个字符一个字符的翻译

function toUnicode(theString) {
  var unicodeString = '';
  for (var i=0; i < theString.length; i++) {
    var theUnicode = theString.charCodeAt(i).toString(16).toUpperCase();
    while (theUnicode.length < 4) {
      theUnicode = '0' + theUnicode;
    }
    theUnicode = '\\u' + theUnicode;
    unicodeString += theUnicode;
  }
  return unicodeString;
}
函数toUnicode(字符串){
var-destring='';
对于(变量i=0;i

。。。但这会产生一个消息正文,该正文被解释为比160个字符的限制更长。

如果以Unicode格式发送消息,则需要16位编码。SMS中16位编码的限制为70个字符。这是因为SMS信令协议限制为140个八位字节,如果使用7位编码,则转换为正常的160个字符。这是SMS协议的限制,而不是Twilio。我不确定您是否问的是如何使用Unicode发送,或者为什么它会打断我的邮件。

您是对的,其中隐藏了两个问题。您的编码答案有助于说明问题-我用于转换为unicode的代码段包含34个字符,并生成204个unicode字符。由于您使用的是Javascript,unicode使用的惯例是前缀“/u”,后跟表示字符的4位十六进制值,在Javascript中,这将是6个字符,表示1个Unicode字符(34 x 6=204)。但一旦Unicode进入TwilioAPI,它仍然应该是每个字符16位。显示消息时,Twilio API是否正确处理Javascript中的Unicode字符?它是否在70个字符处中断了消息?Twilio API似乎没有将其识别为Unicode-就好像是首先计算字符,因为它由于长度而被API拒绝。