web-dev-qa-db-fra.com

Comment faire le Bloc-notes pour enregistrer du texte en UTF-8 sans BOM?

J'ai un fichier CSV avec des accents spéciaux et je l'enregistre dans le Bloc-notes en sélectionnant l'encodage UTF-8. Lorsque je lis le fichier à l'aide de Java, il lit également les caractères de la nomenclature.

Je souhaite donc enregistrer ce fichier au format UTF-8 sans ajouter de nomenclature initialement dans le Bloc-notes.

Sinon, existe-t-il une classe intégrée dans Java qui élimine les caractères de nomenclature présents au début, lors de la lecture du contenu d'un fichier?

25
user1058036
  1. Utilisez Notepad ++ - gratuit et bien meilleur que Notepad. Il sera utile d'enregistrer du texte sans nomenclature à l'aide de Enconding > Encode in UTF-8 without BOM Screenshot of the Notepad++ Menubar > Encoding > Encode in UTF-8 without BOM menu in Notepad++ v6.7.9.2

  2. Lorsque j'ai rencontré ce problème en Java, je n'ai trouvé aucune bibliothèque pour analyser ces trois premiers octets (BOM). Alors mon conseil:

    • Utilisez PushbackInputStream(in, 3).
    • Lire les trois premiers octets
    • Si ce n'est pas une nomenclature ( EF BB BF ), repoussez-les
    • Traitez le flux en UTF-8
32
korifey

Utilisez plutôt Notepad ++. Voir mon blog personnel là-dessus. Dans Notepad ++, choisissez le menu "Encoding", puis "Encode in UTF-8 without BOM".

9
ziesemer

Je viens d'apprendre de ce post Stack Overflow , comme le souligne @ martin-geisler, que vous POUVEZ enregistrer des fichiers sans la nomenclature dans le bloc-notes Windows, en en sélectionnant [~ # ~] ansi [~ # ~] comme encodage.

Je suppose que pour des utilisations plus avancées, cela ne fonctionnera pas car 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 enregistrer un très petit script .php sans BOM en utilisant uniquement le bloc-notes.

J'ai appris à la dure et longue façon que le Bloc-notes de Windows n'est pas un véritable éditeur, bien que j'aimerais signaler aux autres que, malgré cela, il est trompeusement appelé lorsque vous tapez "éditeur" sur les machines Windows plus récentes, au moins sur l'une des miennes.

J'utilise actuellement Emacs et d'autres éditeurs pour résoudre ce problème.

8
olaf atchmi

Bloc-notes sur Windows 10 1903 et versions ultérieures supoprt sauvegarde sur UTF-8 sans BOM. En fait, UTF-8 est maintenant le format de fichier par défaut.

Screenshot of Notepad

Référence: https://www.bleepingcomputer.com/news/Microsoft/windows-10-notepad-is-getting-better-utf-8-encoding-support/

1
Marc Durdin

La réponse est: pas du tout. Le bloc-notes ne peut pas faire ça.

Dans Java vous pouvez simplement sauter le premier octet dans votre InputStream et terminer.

0
Angelo Fuchs

Vous voudrez peut-être essayer Notepad2 ou Notepad ++ . Ces remplacements du Bloc-notes vous permettent de choisir de sortir la nomenclature.

Quant à une solution Java, pour autant que je sache, Java ne comprend pas l'UTF-8 standard. J'ai googlé et trouvé L'écriture Java UTF-8 et Unicode est cassée - Utilisez ce correctif qui pourrait être la solution.

0
Jeow Li Huan

Nous utilisons l'utilitaire BOMStripperInputStream.Java pour supprimer la nomenclature de notre entrée si elle est présente.

0
Thomas