私はSMSアプリケーションで作業しており、Unicode文字(Amharic/G'eez)を送信します。私はthis exampleを使用しています。メソッド240、isEncodeableInGsm0338()
を使用して、別のエンコードまたはデフォルトのエンコードを使用する必要があるかどうかを確認します。文字列がエンコード可能かどうかを確認するにはGsm0338
ここにキャッチがあります。明らかにUnicodeである文字列"የእንግሊዝ ፕሪምየር ሊግ ነህሴ 6 ይጀምራል።"
が、そのメソッドから戻ります。私の仮説は各手紙の半分です。しかし、私はその理論を支持することはできません。テキストを"1. የእንግሊዝ ፕሪምየር ሊግ ነህሴ 6 ይጀምራል።"
に変更すると、正しく検出されます。
ここで何が起こっているか
例のコードではString.getBytes()を使用しています。そしてそれは "プラットフォームのデフォルトエンコーディング"に依存します。どのエンコーディングがあるのか分かりません。この文字セット内のすべての文字のGSM_0338文字列を作成し、SMSテキストの各文字について、この文字列に含まれているかどうかを確認することをお勧めします。チェックのために、SMSテキストからバイトを作成する必要はありません。 –
@RalfKleberhoffそれが役に立ちます。ありがとう –
'isEncodeableInGsm0338()' isoString.getBytes( "GSM_0338") 'を呼び出して、成功すればtrueを返し、失敗した場合はfalseを返します。それとも、['GsmCharsetProvider'](https://github.com/ixonos/jcimd/blob/master/src/main/java/com/googlecode/jcimd/charset/GsmCharsetProvider.java)や[Java GSM 03.38 SMS文字セット翻訳者](https://embeddedfreak.wordpress.com/2008/10/08/java-gsm-0338-sms-character-set-translator/)。 –