Comment convertir une chaîne Java en un tableau d'octets ASCII?Comment convertir une chaîne Java en un tableau d'octets ASCII?
Répondre
String s = "ASCII Text";
byte[] bytes = s.getBytes("US-ASCII");
Il n'y a qu'un seul caractère erroné dans le code que vous avez essayé:
Charset characterSet = Charset.forName("US-ASCII");
String string = "Wazzup";
byte[] bytes = String.getBytes(characterSet);
^
Notez la majuscule "Chaîne". Cela essaie d'appeler une méthode statique sur la classe de chaîne, qui n'existe pas. Au lieu de cela, vous devez appeler la méthode sur votre instance de chaîne:
byte[] bytes = string.getBytes(characterSet);
si oui, pouvez-vous s'il vous plaît me dire comment pourrait-il être qu'une lettre hébraïque est prise 1 octet (encodage ascii), il n'existe même pas dans les ascii. et il n'utilise pas encodung par défaut puisque je l'ai spécifié manuellement. http://i.stack.imgur.com/5WPD3.jpg –
@RoyiNamir: Cela pourrait être mieux posté comme une nouvelle question, mais la raison en est que le caractère n'est pas encodable en US-ASCII et 'getBytes (Charset)' La méthode est spécifiée pour remplacer les caractères qui ne peuvent pas être codés. Avec US-ASCII, ce char de remplacement est le point d'interrogation, donc votre tableau d'octets contient un élément avec la valeur ASCII de '?' (63). –
Convertir une chaîne en valeurs 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);
}
Le problème avec les autres solutions proposées est qu'ils soit déposer des caractères qui ne peuvent pas être directement mis en correspondance avec ASCII, ou les remplacer par un caractère de marqueur comme ?
.
Vous voudrez peut-être avoir par exemple des caractères accentués convertis au même caractère sans l'accent. Il y a quelques astuces pour le faire (y compris la construction d'une table de mappage statique vous-même ou l'utilisation de la 'normalisation' existante définie pour unicode), mais ces méthodes sont loin d'être complètes. Votre meilleur pari est d'utiliser la bibliothèque junidecode, qui ne peut pas être complète non plus mais incorpore beaucoup d'expérience de la manière la plus saine de translittérer Unicode en ASCII.
Si vous arrive d'avoir besoin cela dans Android et que vous voulez le faire fonctionner avec quelque chose de plus que FroYo, vous pouvez également utiliser EncodingUtils.getAsciiBytes():
byte[] bytes = EncodingUtils.getAsciiBytes("ASCII Text");
C'est en fait un très bon pourboire! Sur Android getBytes (...) ne fonctionne pas correctement même sur ICS + – strange
Je ne trouve pas EncodingUtils n'importe où? – behelit
@behelit si vous suivez mon lien, il redirige vers ce bit: http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client Fondamentalement disant que vous devez inclure manuellement la bibliothèque HTTP Apache car elle est désormais obsolète. – dain
Si vous êtes un utilisateur guava il y a une classe Charsets
à portée de main:
String s = "Hello, world!";
byte[] b = s.getBytes(Charsets.US_ASCII);
en plus de ne pas coder en dur le nom charset arbitraire dans votre code source, il a un avantage beaucoup plus grand: Charsets.US_ASCII
est de type Charset
(non String
) de sorte que vous éviterez UnsupportedEncodingException
vérifié uniquement à partir de String.getBytes(String)
, mais pas de String.getBytes(Charset)
. En Java 7, la classe StandardCharsets
est équivalente.
Malheureusement, 'String.getBytes (Charset)' n'a pas été ajouté avant API 9 :(Donc, si vous voulez cibler Froyo et plus, vous ne pouvez pas faire cela. – yincrash
Essayez ceci:
/**
* @(#)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();
}
}
}
Dans ma chaîne Je caractères thaïs (tis620 encodée) et trémas allemands. La réponse des agiles m'a mis sur le bon chemin. Au lieu de .getBytes() J'utilise maintenant
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;
}
Par la grâce d'ALLAH j'ai trouvé la solution.En fait, la classe Base64 n'est pas disponible dans Android. Le lien est donné ci-dessous pour plus d'informations.
byte[] byteArray;
byteArray= json.getBytes(StandardCharsets.US_ASCII);
String encoded=Base64.encodeBytes(byteArray);
userLogin(encoded);
Voici le lien pour la classe Base64. http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-android.html
- 1. Convertir une chaîne de caractères hexadécimaux en ASCII en Java
- 2. convertir binaire en ascii, chaîne de rotation en ascii - java
- 3. Convertir une chaîne d'octets en ASCII
- 4. Convertir tableau en une chaîne en java
- 5. convertir chaîne numpy tableau en une matrice ascii numpy
- 6. Convertir une chaîne Java en tableau
- 7. Convertir une chaîne ASCII en long long
- 8. convertir une chaîne en un tableau de chaînes en Java
- 9. comment convertir une chaîne utf8 en chaîne ASCII?
- 10. Comment convertir une chaîne en ascii en binaire en C#?
- 11. Comment convertir une chaîne email en caractères ASCII?
- 12. Comment convertir une chaîne ASCII en chaîne UTF-8 en Java?
- 13. Convertir une chaîne Java en un tableau d'octets
- 14. comment convertir un tableau char en chaîne en java
- 15. Comment convertir une chaîne ASCII encodée en UTF8 en php?
- 16. Comment convertir la chaîne en ASCII base64 Embedded c
- 17. Comment convertir de longues valeurs hexadécimales ASCII en une chaîne?
- 18. Convertir une chaîne en un tableau associatif
- 19. Convertir une chaîne en un tableau
- 20. API GLib pour convertir une chaîne hexadécimale en chaîne ASCII?
- 21. Comment puis-je convertir une valeur Unicode en chaîne ASCII?
- 22. javascript - comment convertir une chaîne unicode en ascii
- 23. Convertir un tableau 2D en chaîne et revenir en Java?
- 24. Convertir une chaîne codée en ASCII en UTF8?
- 25. Comment convertir une chaîne en tableau?
- 26. Convertir un tableau en chaîne
- 27. Convertir une chaîne Unicode à une chaîne ASCII échappé
- 28. Comment convertir un tableau JSON en chaîne
- 29. Convertir une chaîne avec du code ASCII en PHP
- 30. Comment convertir un tableau d'octets en chaîne?
Je suis légèrement gêné par la facilité avec laquelle c'était. –
Ceci convertira les caractères non configurables comme '\ u00e0' (& agrave;) en '?'. Il serait plus agréable d'avoir une méthode qui convertit cela en 'a'. –
Pour les personnes utilisant Java 7 ou version ultérieure, utilisez la classe [StandardCharsets] (http://docs.oracle.com/javase/7/docs/api/java/nio/charset/StandardCharsets.html) qui contient des constantes standard charsets. 'byte [] b = s.getBytes (StandardCharsets.US_ASCII);' –