ADB を通じて発行されたコマンドをリッスンするサービスを実装しました。ADB を介して送信されるコマンドの例は、次のようになります。
adb shell am startservice -a com.testandroid.SEND_SMS -e number 123123123 -e message "åäö"
さて、ここでの問題は、文字列 "åäö" のエンコーディングがおかしくなっているように見えることです。その文字列エクストラを取得してすぐにログに出力すると、四角形の "[]" という未知の文字が表示されます。このメッセージを送信すると、メッセージ アプリに漢字が表示されます。ウムラウト以外の文字 (ASCII だと思います) に固執する限り、すべて正常に動作します。
私はこれにWindows 7とコマンドラインを使用しています。コマンドラインのエンコーディングには触れていません。バイト文字を取得し、UTF-8 をエンコーディング引数として渡し、UTF-8 をエンコーディング引数として渡す新しい文字列を作成して、エクストラ文字列を処理しようとしました。そこにも。ただし、サイコロはありません。
getBytes() を使用した場合のバイトの値は、å: -27、ä: -92、ö: -74 です。
少なくともウムラウトを利用できるようにするにはどうすればよいでしょうか?
これらはすべて Linux で問題なく動作します。