Comment enregistrer les caractères chinois dans un fichier avec Java?
J'utilise le code suivant pour enregistrer les caractères Chinois dans un .fichier txt, mais quand je l'ai ouvert avec Wordpad, je ne pouvais pas le lire.
StringBuffer Shanghai_StrBuf = new StringBuffer("\u4E0A\u6D77");
boolean Append = true;
FileOutputStream fos;
fos = new FileOutputStream(FileName, Append);
for (int i = 0;i < Shanghai_StrBuf.length(); i++) {
fos.write(Shanghai_StrBuf.charAt(i));
}
fos.close();
Que puis-je faire ? Je sais que si je couper et coller des caractères Chinois dans Wordpad, je peux l'enregistrer dans un .fichier txt. Comment dois-je faire en Java ?
source d'informationauteur Frank
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs facteurs à l'œuvre ici:
fos = new FileOutputStream(FileName,Append);
Ici est une méthode fiable d'ajout de données UTF-8 dans un fichier:
Utilisation:
Remarque: si le fichier existait déjà et que vous avez choisi d'ajouter des données existantes et n'était pas codé en UTF-8, la seule chose que le code va créer est un gâchis.
Ici est la
Closer
type utilisé dans ce code:Ce code permet un style Windows meilleure supposition sur la façon de lire le fichier en fonction de l'ordre des octets de marques:
Utilisation:
(Système d'.out utilise le codage par défaut, de sorte qu'il imprime quelque chose de sensé dépend de votre plate-forme et configuration.)
Qui me rappelle:
Le Minimum Absolu que Tout Développeur Doit Absolument, Positivement Savoir Sur Unicode et les Jeux de Caractères (Pas d'Excuses!)
Si vous pouvez compter que le codage de caractères par défaut est UTF-8 (ou tout autre codage Unicode), vous pouvez utiliser les éléments suivants:
Le moyen le plus sûr est de toujours spécifier explicitement l'encodage:
P. S. Vous pouvez utiliser tous les caractères Unicode dans le code source de Java, de même que la méthode et les noms de variables, si le paramètre d'encodage pour javac est configuré droit. Que fait le code source plus lisible que l'échappé
\uXXXX
forme.Être très prudent avec les approches proposées. Même spécifiant l'encodage du fichier comme suit:
Écrivain w = new OutputStreamWriter(new FileOutputStream("test.txt"), "UTF-8");
ne fonctionnera pas si vous êtes en cours d'exécution sous un système d'exploitation comme Windows. Même en mettant la propriété de système de fichier.le codage UTF-8 ne permet pas de résoudre le problème. C'est parce que Java ne parvient pas à écrire une marque d'ordre des octets (BOM) pour le fichier. Même si vous spécifier l'encodage lors de l'écriture dans un fichier, ouvrir le même fichier dans une application comme Wordpad va afficher le texte, comme des ordures, car il ne détecte pas la NOMENCLATURE. J'ai essayé de courir les exemples ici dans Windows (avec une plate-forme/conteneur de codage de CP1252).
Un bug qui existe pour décrire le problème en Java:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
La solution pour le moment est d'écrire la marque d'ordre d'octet-vous pour s'assurer que le fichier s'ouvre correctement dans d'autres applications. Voir ce pour plus de détails sur la NOMENCLATURE:
http://mindprod.com/jgloss/bom.html
et pour une solution correcte voir le lien suivant:
http://tripoverit.blogspot.com/2007/04/javas-utf-8-and-unicode-writing-is.html
Voici un moyen parmi beaucoup d'autres. Fondamentalement, nous sommes juste en précisant que la conversion être fait pour de l'UTF-8 avant la sortie d'octets à la FileOutputStream:
Je vérifiés manuellement ce contre les images à http://www.fileformat.info/info/unicode/char/ . Dans l'avenir, veuillez suivre Java normes de codage, y compris les bas-de-casse des noms de variables. Il améliore la lisibilité.
Essayer cela,