0

我正在发送包含日语字符的短信。

这是我的留言

日语

このOTPを使用してQuikドライブにログインします。 このOTPを誰とも共有しないでください

用英语讲

use this OTP to login to Quik Drive. Please don't share this OTP to anyone

这是我得到的

这是我在手机上得到的

这是我的nodejs代码

class ClickatellService {
  constructor() {
    this.sendSms('+mobileNumber', 'このOTPを使用してQuikドライブにログインします。 このOTPを誰とも共有しないでください')
  }

  sendSms(to, message) {
    return new Promise((resolve, reject) => {
      request.get(
        `https://api.clickatell.com/http/sendmsg?user=XXX&password=XXX&api_id=XXX&to=${to}&text=${encodeURI(
          message
        )}`,
        (error, response, body) => {
          if (error) {
            return resolve(error)
          } else {
            return resolve(response)
          }
        }
      )
    })
  }
}

我能做的就是用简单的日语传达信息。

任何帮助,将不胜感激!!!

4

2 回答 2

1

您可能需要在发送之前将字符集设置为 UTF-8。我不知道您在代码中使用的实际字符集是什么,但请确保它是 UTF-8。

如果您已经使用 UTF-8,请确保您使用的实际字体能够处理日文字母。

有关如何处理日文字母的更多说明,也许您应该检查一下:

https://www.kanjidatabase.com/japanese_developer_tips.php

于 2019-11-20T11:52:15.340 回答
1

您需要使用 Unicode 通过 SMS 发送非 GSM 字符,然后还要设置 unicode 参数。

这是一个 PHP 示例:

$converted = iconv(
    "UTF-8", 
    "UCS-2BE", 
    "このOTPを使用してQuikドライブにログインします。 このOTPを誰とも共有しないでください"
);

$sms_data = urlencode(bin2hex($converted));

http://api.clickatell.com/....text=$sms_data&unicode=1

注意:Unicode 消息通常比非 unicode 消息短,因此请小心,因为您可能会为多条消息付费,详细信息请点击此处:

https://archive.clickatell.com/developers/api-docs/concatenation-advanced-message-send/

片段:

单个 SMS 消息部分允许 70 个(16 位)字符发送串联消息时,每个消息部分使用 67 个(16 位)字符

于 2019-11-21T11:29:19.833 回答