10 ответов:
если вы гуавы пользователь есть удобный
Charsetsкласс:String s = "Hello, world!"; byte[] b = s.getBytes(Charsets.US_ASCII);Помимо не жесткого кодирования произвольного имени кодировки в исходном коде он имеет гораздо большее преимущество:
Charsets.US_ASCIIизCharsetтип (неString) так что вы не проверилиUnsupportedEncodingExceptionвозникает только сString.getBytes(String), но неString.getBytes(Charset).в Java 7 есть эквивалент
StandardCharsetsкласса.
в коде, который вы пробовали, есть только один символ:
Charset characterSet = Charset.forName("US-ASCII"); String string = "Wazzup"; byte[] bytes = String.getBytes(characterSet); ^обратите внимание на верхний регистр "строка". Это пытается вызвать статический метод класса String, который не существует. Вместо этого вам нужно вызвать метод на вашем экземпляре string:
byte[] bytes = string.getBytes(characterSet);
проблема с другими предлагаемыми решениями заключается в том, что они либо отбрасывают символы, которые не могут быть напрямую сопоставлены с ASCII, либо заменяют их символом маркера, например
?.вы можете захотеть, чтобы, например, акцентированные символы были преобразованы в тот же символ без акцента. Для этого есть несколько трюков (включая создание статической таблицы сопоставления самостоятельно или использование существующей "нормализации", определенной для unicode), но эти методы далеки от полного.
лучше всего использовать junidecode библиотека, которая также не может быть полной, но включает в себя большой опыт в наиболее разумном способе транслитерации Unicode в 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; }
преобразование строки В значения 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); }
Я нашел решение. На самом деле класс 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
попробуйте это:
/** * @(#)demo1.java * * * @author * @version 1.00 2012/8/30 */ import java.util.*; public class demo1 { Scanner s=new Scanner(System.in); String str; int key; void getdata() { System.out.println ("plase enter a string"); str=s.next(); System.out.println ("plase enter a key"); key=s.nextInt(); } void display() { char a; int j; for ( int i = 0; i < str.length(); ++i ) { char c = str.charAt( i ); j = (int) c + key; a= (char) j; System.out.print(a); } public static void main(String[] args) { demo1 obj=new demo1(); obj.getdata(); obj.display(); } } }
Comments