簡體   English   中英

無法獲得多余的轉義字符以GSM 7位字母工作。

[英]Can't get the extra escape characters to work in GSM 7-bit alphabet.

例如,我要向SMSC發送此字符串“ []”,該字符串根據GSM 7位字母以十六進制“ 1B3C201B3E”的形式編碼為byte [],其中“ 1B”是另外10個字符的字符,而3C是“ [“和3E分別為”]“,但無法在我的手機上正確打印打印內容,因為我的手機會打印” <>“,因為它將空格打印為” 1B“,並且” <“ =” 3C“和”>“ =” 3E ”。 而且,它不能打印任何奇怪的字符“èéùìòÇØøÅå€Ææßé@¤¡ÄÖÑܧ¿äöñüà”,但可以與希臘字符一起使用。 是我的錯誤,還是與特定的SMSC有關? byte []是否正確?

您需要根據需要使用的字符類型選擇一個data_coding(或編碼方案)。 SMPPv4協議規范文檔的第136頁向您顯示可以使用的數據編碼。

然后,例如,如果選擇UCS2,則可以使msg.getBytes(“ UCS2”)並將數據編碼設置為8,這將使所有UCS2可表示的字符在電話中清楚顯示。

我認為如果您需要使用GSM 7位字母,則需要將數據編碼設置為1,那么您需要一個gsm 7位字母編碼器(從字符串到字節),我認為這在標准jdk中不可用

您將data_coding設置為default(0),這意味着您無需在pdu中使用來指定字母。 SMSC將使用SMSC端上默認配置的字母對其進行解碼。

在您的情況下,似乎SMSC沒有配置為默認使用GSM 7位。 可能的默認字母是拉丁語(ISO-8859-1),因為在拉丁語中,0x3C為“ <”,0x3E為“>”,因此0x1B無法打印,因此將其轉換為空格。

因此,您可以嘗試將郵件編碼為ISO-8859-1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM