Convertir en Tableau d'Octets à Charsequence dans Android
J'ai utilisé le code ci-dessous pour convertir Charsequence de Tableau d'Octets. Puis-je sauvegarder le Tableau d'Octets en tant que Blob à ma Base de données Sqlite.
Pour cela , j'ai utilisé le code ci-dessous,
public static byte[] toByteArray(CharSequence charSequence) {
if (charSequence == null) {
return null;
}
byte[] barr = new byte[charSequence.length()];
for (int i = 0; i < barr.length; i++) {
barr[i] = (byte) charSequence.charAt(i);
}
return barr;
}
Maintenant, je voudrais convertir mon tableau d'octets (extrait de sqlite à Charsequence. Mais je ne pouvais pas obtenir de l'aide sur elle.
Comment convertir un Tableau d'Octets à Charsequence?
Toute aide est très appréciée.
- Est-ce ASCII? Parce que si non, que la conversion sera de perdre des données.
CharSequence
est une interface, de sorte que vous besoin d'une mise en œuvre effective de mettre votre tableau d'octets en...- Pas mon firned. Il est TSCII format. Je travaille pour l'une des langues Indo app. La perte de données peut affecter mon html séquence, je crois.
- Si vous avez un CharSequence dans Android, il a déjà été transformé en Unicode (ou est déjà cassé). Pourquoi ne pas utiliser UTF-8 pour tout dans votre système, puis (peut-être, si vraiment nécessaire) convertir TSCII pour l'importation/l'exportation à tout ce que vous êtes en cours d'exécution il?
Vous devez vous connecter pour publier un commentaire.
Pour convertir un
CharSequence
dans un tableau d'octetsDe se reconvertir à nouveau
Rappelez-vous juste que
CharSequence
est une interface qui est mis en œuvre parString
,StringBuilder
,StringBuffer
, etc ... donc tous lesString
instances sontCharSequence
cas, mais pas tous lesCharSequence
instances sontString
mais le contrat deCharSequence
est que sontoString()
méthode doit renvoyer l'équivalentString
En interne toutes les chaînes de caractères en Java sont représentés comme Unicode, donc tant que le consommateur et le producteur sont à la fois Java la plus sûre de jeu de caractères à utiliser est l'un des
UTF-8
ouUTF-16
selon l'susceptibles d'encodage de la taille de vos données. Où latins, prédominent,aura plus de 99,9% du temps, de donner le plus efficace de l'espace de codage, pour les jeux de caractères non latins (Chinois par exemple), vous pouvez trouver
UTF-16
plus efficace de l'espace en fonction du jeu de données de l'encodage. Vous auriez besoin d'avoir des mesures, en montrant qu'il est plus efficace de l'espace de codage et commeUTF-8
est plus largement attendue, je recommandeUTF-8
que le codage par défaut dans tous les cas.On dirait que vous êtes à l'aide de données ASCII (sinon, ton code est assez figé).
Pour obtenir un CharSequence d'octets ASCII, vous pouvez le faire
Pour les autres encodages, il suffit de spécifier le nom du jeu de caractères.
ISO-8852-1
qui est des caractères 8 bits alors queUS-ASCII
est techniquement 7 bits. docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.htmlString(byte[], CharSet charset)
pour obtenir le plein contrôle sur le jeu de caractères.CharSequence
à unbyte[]
en utilisant l'encodage que vous souhaitez utiliser. Maintenant, vous êtes à seulement couléechar
s àbyte
s.TSCII
? Tous Java systèmes de support de l'UTF-8, donc je voudrais essayer cette première.