Java文字列をASCIIバイト配列に変換する方法は?
他の提案されたソリューションの問題は、ASCIIに直接マッピングできない文字をドロップするか、?
のようなマーカー文字に置き換えることです。
たとえば、アクセント付き文字をアクセントなしの同じ文字に変換したい場合があります。これを行うにはいくつかのトリックがあります(静的マッピングテーブルを自分で作成するか、Unicodeに定義された既存の「正規化」を活用するなど)が、これらの方法は完全にはほど遠いです。
最善の策は junidecode ライブラリを使用することです。これも完全ではありませんが、UnicodeをASCIIに音訳する最も健全な方法で多くの経験を取り入れています。
試したコードには1文字しか間違っていません。
Charset characterSet = Charset.forName("US-ASCII");
String string = "Wazzup";
byte[] bytes = String.getBytes(characterSet);
^
大文字の「String」に注意してください。これは、存在しない文字列クラスの静的メソッドを呼び出そうとします。代わりに、文字列インスタンスでメソッドを呼び出す必要があります。
byte[] bytes = string.getBytes(characterSet);
String s = "ASCII Text";
byte[] bytes = s.getBytes("US-ASCII");
Androidでこれが必要になり、FroYoより古いもので動作させたい場合は、 EncodingUtils.getAsciiBytes() を使用することもできます。
byte[] bytes = EncodingUtils.getAsciiBytes("ASCII Text");
私の文字列には、タイ文字(TIS620エンコード)とドイツ語のウムラウトがあります。アギレスからの答えは正しい道に私を置きました。 .getBytes()の代わりに私は今使用しています
int len = mString.length(); // Length of the string
byte[] dataset = new byte[len];
for (int i = 0; i < len; ++i) {
char c = mString.charAt(i);
dataset[i]= (byte) c;
}
私は解決策を見つけました。実際、Base64クラスはAndroidでは使用できません。詳細については、以下のリンクを参照してください。
byte[] byteArray;
byteArray= json.getBytes(StandardCharsets.US_ASCII);
String encoded=Base64.encodeBytes(byteArray);
userLogin(encoded);
Base64クラスのリンクは次のとおりです。 http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-Android.html
文字列をASCII値に変換します。
String test = "ABCD";
for ( int i = 0; i < test.length(); ++i ) {
char c = test.charAt( i );
int j = (int) c;
System.out.println(j);
}