我需要使用Sinch API發送帶有阿拉伯文字的短信。我的短信息包含英文,阿拉伯文和數字。Sinch阿拉伯語消息
我試過
- 我已閱讀文檔Sinch但他們沒有提供關於如何使用UTF-16BE和頭 編碼而發送這條消息的任何 詳細的文檔。
- 我也聯繫了他們的支持團隊,但他們沒有提供詳細的解決方案。而他們提到的任何東西都不起作用。
下面是我試圖
String arabicFormattedMessage = "Some English Text \n\n"+"رجى الاتصال بالامتثال التجاري وحماية المستهلك (ككب) من دائرة التنمية الاقتصادية في 12345678 لمزيد من التفاصيل، إذا لم يتم الاتصال في غضون 5 أيام عمل.";
jsonObject.put("message", arabicFormattedMessage);
String messageBody = new String(jsonObject.toString().getBytes(),"UTF-16BE");
String contentTypeHeader = "application/json; charset=UTF-16BE";
headers.put("authorization", base64AuthHeader);
headers.put("content-type", contentTypeHeader);
headers.put("x-timestamp", timeStampHeader);
//headers.put("encoding", "UTF-16BE"); Tried with and without this, but still not working.
響應我已經RECD
Sinch responseCode: 400
Sinch Response: message object is invalid. toNumber object is invalid.
正如意見中的要求的代碼,下面是英文的工作示例只:
JSONObject jsonObject = new JSONObject();
String formattedMessage = "some english message";
jsonObject.put("message", formattedMessage);
final String messageBody = jsonObject.toString();
final String base64AuthHeader = "basic" + " " + base64AppDetails;
String contentTypeHeader = "application/json; charset=UTF-8";
final String timeStampHeader = DateUtil.getFormattedTimeString(new Date());
headers.put("authorization", base64AuthHeader);
headers.put("content-type", contentTypeHeader);
headers.put("x-timestamp", timeStampHeader);
HTTP POST請求
HttpClient.sendHttpPostRequest(url, messageBody, headers);
成功的電話後,我得到消息ID響應來自Sinch
你試過把它編碼到utf-8中嗎 – lionscribe
是的,我試過了,它沒有奏效,甚至支持sinch的團隊要求我用UTF-16BE解析消息。另外,從文檔中也可以找到下面這行:「阿拉伯文,中文,韓文,日文或西裏爾字母語言(如烏克蘭文,塞爾維亞文,保加利亞文等)中的字符必須使用16位UCS -2字符編碼「。參考 - https://www.sinch.com/docs/sms/ –
它應該確實發送爲utf8 – cjensen