Comment faire Notepad pour sauvegarder du texte en UTF-8 sans BOM?
j'ai un fichier CSV avec des accents spéciaux et je l'enregistre dans Notepad en sélectionnant L'encodage UTF-8. Quand je lis le fichier en utilisant Java, il lit les caractères BOM aussi.
donc je veux enregistrer ce fichier au format UTF-8 sans ajouter de BOM au départ dans le bloc-notes.
Sinon y a-t-il une classe intégrée en Java qui élimine les caractères BOM présents au début, lors de la lecture du contenu d'un fichier?
6 réponses
-
utiliser Notepad++ - libre et bien meilleur que Notepad. Il aidera à sauver le texte sans BOM en utilisant encodage > encodage en UTF-8 sans BOM :
-
lorsque j'ai rencontré ce problème en Java, je n'ai trouvé aucune bibliothèque pour analyser ces trois premiers octets (BOM). Donc mon conseil:
- utiliser
PushbackInputStream(in, 3)
. - lire les trois premiers octets
- Si ce n'est pas de la NOMENCLATURE ( EF BB BF ), de le repousser
- traiter le flux en tant que UTF-8
- utiliser
utilisez le bloc-notes++ à la place. Voir mon post de blog personnel sur elle. À partir du bloc-notes++, choisissez le menu "encodage", puis"Encoder en UTF-8 sans BOM".
je viens d'apprendre de ce post de débordement de pile , comme @martin-geisler le souligne, que vous pouvez enregistrer des fichiers sans le BOM dans le bloc-notes de Windows, par en sélectionnant ANSI comme encodage.
je suppose que pour les utilisations plus avancées cela ne fonctionnera pas parce que le fichier résultant n'est probablement pas l'encodage final souhaité, mais en fait ANSI; mais j'ai testé et confirmé que cela fonctionne pour sauver un très petit .php script sans BOM utilisant uniquement le bloc-notes.
j'ai appris à mes dépens que Bloc-notes de Windows n'est pas un véritable éditeur, bien que je voudrais faire remarquer à d'autres que, malgré cela, c'est de façon trompeuse appelé lorsque vous tapez" editor " sur de nouvelles machines Windows, au moins sur l'une des miennes.
j'utilise actuellement Emacs et d'autres éditeurs pour résoudre ce problème.
la réponse est: pas du tout. Notepad ne peut pas faire ça.
en Java, vous pouvez simplement sauter le premier byte dans votre entrée et être fait.
vous pouvez essayer Notepad2 ou Notepad++ . Ces remplacements de bloc-notes ont l'option pour vous de choisir si la sortie BOM.
quant à une solution Java, autant que je sache, Java ne comprend pas la norme UTF-8. J'ai googlé et trouvé L'écriture UTF-8 de Java et Unicode est cassée - utilisez cette correction qui pourrait être la solution.
nous utilisons l'utilitaire BOMStripperInputStream.java pour enlever le BOM de notre entrée si présent.