2012-07-19 6 views
0

J'ai un problème de codage. J'ai une application android qui se compose d'un champ de texte permettant à un utilisateur d'utiliser un clavier hébreu et une clé en caractères hébreux. Je souhaite encoder ces données conformément à la page de code hébraïque pc862 afin que je puisse l'envoyer à une imprimante pour impression (l'imprimante est configurée pour accepter les données selon cette page de code). Je devrais pouvoir le faire avec le code suivant:Codage hébreu en Java

String strData = new String(textData); 
byte [] rawData = null; 
try 
{ 
    rawData = strData.getBytes("Cp862"); // Cp862: PC Hebrew 
} 
catch (UnsupportedEncodingException e) 
{ 
    rawData = strData.getBytes(); 
} 

Selon le document trouvé ici, http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html

je devrais pouvoir encoder cette page de code. Toutefois, le code continue de lancer l'exception UnsupportedEncodingException. J'utilise java se 7 et jre 7, et j'ai importé java.io. Je ne suis pas sûr de savoir pourquoi. J'ai essayé les autres pages de code sur ce document et celles que j'ai essayées, la plupart d'entre elles sont correctes.

Est-ce que quelqu'un a des idées sur ce que je fais de mal? Toute opinion serait très appréciée.

+0

Echoue-t-il sur Java SE ou sur Android? Je ne serais pas surpris si Android manquait de nombreux encodages dans la spécification SE; Si tel était le cas, vous voudrez probablement rouler le vôtre (ou trouver la source que vous pouvez utiliser pour un) encodage de la norme à inclure avec votre application Android. – antlersoft

+0

Dans android. Je pensais la même chose, que c'était peut-être un problème de support Android. J'ai entendu dire qu'il y avait des moyens de créer votre propre encodage, y a-t-il de la documentation sur ce que vous pourriez faire remarquer? Cela ressemble à beaucoup de travail. – user1313973

Répondre

0

L'encodage par défaut (UTF-8) prend en charge l'hébreu, alors pourquoi avez-vous besoin de CP862?

+0

J'aimerais pouvoir utiliser UTF-8, mais l'imprimante ne le supporte pas. Il utilise des pages de code très anciennes et rarement utilisées. Tout autre encodage hébreu que j'ai essayé avec lui a donné du charabia quand je l'ai imprimé. – user1313973

0

Je ne connais pas les restrictions de licence pour votre application, mais GNU Classpath a un tel encodeur et le source is of course available. Vous pouvez inclure ceci dans votre propre application (la licence le permet, bien sûr).

1

Avez-vous essayé d'utiliser le nom "IBM862" à la place?

Si je lance le code suivant:

public static void main(String[] args) { 
    Map<String, Charset> avmap = Charset.availableCharsets(); 
    for(String name : avmap.keySet()) { 
     System.out.println("Charset: "+avmap.get(name)); 
    } 
} 

Je reçois une liste des noms disponibles charset qui comprend « IBM862 » mais ne comprend pas Cp862. Et selon la page à laquelle vous liez, "IBM862" est le nom java.nio pour Cp862.

+0

Merci pour cet extrait de code. Maintenant, je maintenant comment vérifier les jeux de caractères disponibles. C'est extrêmement utile. Cependant, il ne code toujours pas. l'utilisation de getBytes ("IBM862") envoie toujours l'exception UnsupportedEncodingException – user1313973