J'ai quelques chaînes en Java (à l'origine d'une feuille Excel) que je suppose être dans la page de codes de Windows 1252. Je les veux convertis au format Unicode de Javas. Le fichier Excel a été analysé à l'aide du package JXL, au cas où cela serait important.Convertir de la page de code 1252 (Windows) en Java, en Java
Je vais clarifier: apparemment les chaînes obtenues à partir du fichier Excel ressemblent à peu près à une sorte d'Unicode.
WorkbookSettings ws = new WorkbookSettings();
ws.setCharacterSet(someInteger);
Workbook workbook = Workbook.getWorkbook(new File(filename), ws);
Sheet s = workbook.getSheet(sheet);
row = s.getRow(4);
String contents = row[0].getContents();
C'est là le contenu semble contenir unicode quelque chose, l'AAO sont des caractères multi-octets, tandis que les caractères ASCII sont d'un seul octet normaux. Ce n'est certainement pas Latin1. Si j'imprime la chaîne "contents" avec printLn et la redirige vers un fichier hello.txt, je trouve que la lettre "ö" est représentée avec deux octets, C3 B6 en hexadécimal. (195 et 179 en décimal.)
[modifier]
J'ai essayé les suggestions avec différents codepages etc donnés ci-dessous, la conversion de Cp1252 essayé etc. Il y avait une sorte de conversion, parce que je recevrais une autre genre de charabia à la place. Comme référence j'ai toujours imprimé une chaîne "ö" codée à la main dans le code source, pour vérifier qu'il n'y avait pas quelque chose de mal avec mon terminal ou des polices de caractères ou quoi que ce soit. Le "ö" tapé manuellement a toujours fonctionné.
[modifier]
J'ai aussi essayé WorkBookSettings comme suggéré dans les commentaires, mais je regardais dans le code pour JXL et characterSet semble être ignoré par l'analyse du code. Je pense que le code d'analyse ne regarde que l'encodage du fichier XLS.
Le format Unicode de Java est UTF-16, iirc. – Powerlord