Comment faire pour convertir un Java Chaîne ASCII tableau d'octets?
Comment convertir un Java Chaîne ASCII tableau d'octets?
Vous devez vous connecter pour publier un commentaire.
Comment convertir un Java Chaîne ASCII tableau d'octets?
Vous devez vous connecter pour publier un commentaire.
À l'aide de la
getBytes
méthode, en lui donnant l'appropriéesCharset
(ouCharset
nom).Exemple:
(Avant Java 7:
byte[] b = s.getBytes("US-ASCII");
)byte[] b = s.getBytes(StandardCharsets.US_ASCII);
Si vous êtes un goyave de l'utilisateur il y a une pratique
Jeux
classe:En dehors de ne pas coder en dur arbitraire charset nom dans votre code source, il a un gros avantage:
jeux de Caractères.US_ASCII
est deCharset
type (pasString
), de manière à éviter vérifiéUnsupportedEncodingException
levée uniquement à partir deString.getBytes(String)
, mais pas deString.getBytes(jeu de caractères)
.Dans Java 7, il est équivalent
StandardCharsets
classe.String.getBytes(Charset)
n'a pas été ajouté jusqu'à ce que l'API 9 🙁 Donc si vous voulez cibler Froyo et au-dessus, vous ne pouvez pas le faire.Il n'y a qu'un seul personnage mal dans le code que vous avez essayé:
Notez la majuscule de "Chaîne". Cette tente d'appeler une méthode statique de la classe string, qui n'existe pas. Au lieu de cela, vous devez appeler la méthode sur votre chaîne de caractères exemple:
getBytes(Charset)
méthode est spécifiée pour remplacer les caractères qui ne peuvent pas être codées. Avec US-ASCII, ce remplacement char est le point d'interrogation, de sorte que votre tableau d'octets contient un élément avec la valeur ASCII de '?' (63).Le problème avec les autres solutions proposées, c'est qu'ils soit en baisse de caractères qui ne peuvent pas être directement mappés à des ASCII, ou de les remplacer par un marqueur de caractère comme
?
.Vous pourriez désirer pour avoir, par exemple des caractères accentués converti à cette même personnage sans l'accent. Il ya une couple de trucs à faire (y compris la construction d'un mappage statique table vous-même ou existantes de "normalisation" n'est pas définie pour unicode), mais ces méthodes sont loin d'être complètes.
Votre meilleur pari est d'utiliser le junidecode de la bibliothèque, qui ne peut pas être complète, mais intègre beaucoup d'expérience, dans la plupart façon saine de transliterating Unicode en ASCII.
S'il vous arrive d'avoir besoin de ce en Android et souhaitez la faire fonctionner avec rien de plus que FroYo, vous pouvez également utiliser EncodingUtils.getAsciiBytes():
Dans ma chaîne, j'ai des caractères Thaïs (TIS620 codé) et les accents. La réponse à partir d'agiles me mettre sur le droit chemin. Au lieu de .getBytes() j'utilise maintenant
Convertit une chaîne de valeurs ascii.
J'ai trouvé la solution. En fait Base64 classe n'est pas disponible sur Android. Lien est donné ci-dessous pour plus d'informations.
Voici le lien pour Base64 classe: http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-android.html
Essayez ceci: