1

たとえば、この文字列「[ ]」を SMSC に送信しています。この文字列は、GSM 7 ビット アルファベットに従って 16 進数の「1B3C201B3E」でバイト [] にエンコードされます。「1B」は余分な 10 文字の文字で、3C は「」です。 [" および 3E はそれに応じて "]" ですが、"< >" を印刷する携帯電話では正しく印刷されません。これは、"1B" をスペースとして印刷し、"<" = "3C" および ">" = "3E "。また、奇妙な文字 "èéùìòÇØøÅå€ÆæßÉ@¤¡ÄÖÑܧ¿äöñüà" は印刷できませんが、ギリシャ文字では問題なく動作します。それは私のエラーですか、それとも特定の SMSC と関係がありますか? byte[] は正しいですか?

4

2 に答える 2

0

使用する文字の種類に基づいて、1 つの data_coding (またはエンコード スキーム) を選択する必要があります。SMPPv4 プロトコル仕様ドキュメントの 136 ページには、使用できるデータ コーディングが示されています。

たとえば、UCS2 を選択した場合、msg.getBytes("UCS2") を作成し、データコーディングを 8 に設定すると、UCS2 で表現可能な文字が電話で適切に表示されます。

GSM 7 ビット アルファベットを使用する必要がある場合は、データコーディングを 1 に設定する必要があると思います。次に、文字列からバイトまでの gsm 7 ビット アルファベット エンコーダーが必要です。標準の jdk では使用できないと思います。

于 2013-08-26T13:45:33.330 に答える