Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 14853|Répondre: 0

[Source] Problèmes de préfixe BOM rencontrés lors de la lecture de fichiers Unicode (UTF-8, etc.) en Java

[Copié le lien]
Publié sur 14/01/2019 16:26:17 | | |
Le problème des premiers caractères BOM rencontrés lors de la lecture de fichiers Unicode (UTF-8, etc.) en Java et comment les gérer

Les fichiers texte créés avec un éditeur de texte sous Windows auront un identifiant de liste des matériaux ajouté à l’en-tête du fichier (le premier caractère) si vous choisissez de les enregistrer dans un format Unicode tel que UTF-8.

Cette identification n’est pas supprimée lorsque le fichier est lu en Java, et String.trim() ne peut pas être supprimé. Si vous utilisez readLine() pour lire la première ligne et la stocker dans la Chaîne, la longueur de la chaîne sera 1 plus grande que ce que vous voyez, et le premier caractère est cette liste de combustion.

Cela peut poser des problèmes, par exemple lors de la lecture d’un fichier ini, si vous voulez savoir si la première ligne commence par « [ », vous ne pouvez pas juger correctement.

Heureusement, lorsque Java lit des fichiers Unicode, il modifie uniformément la liste de matériaux en « \uFEFF », donc vous pouvez résoudre manuellement (après jugement, utilisez substring() ou replace() pour supprimer cette liste de noms) :

Cependant,Cette approche n’est pas parfaiteSi le fichier jar généré s’exécute sous Windows, il y a toujours un problème. La solution de contournement ultime consiste à utiliser le BOMInputStream fourni par apache commons io :

Qu’est-ce que la Chambre de Départ ?


BOM = Marque d’ordre d’octets
La BOM est la méthode recommandée pour marquer l’ordre des octets dans la spécification Unicode. Par exemple, pour UTF-16, si le récepteur reçoit une liste de données FEFF, cela indique que le flux d’octets est Big-Endian ; Si FFFE est reçu, cela indique que le flux d’octets est Little-Endian.
UTF-8 ne nécessite pas de BOM pour indiquer l’ordre des octets, mais il peut être utilisé pour indiquer « Je suis encodé UTF-8 ». L’encodage UTF-8 de la BOM est EF BB BF (comme on le voit en ouvrant le texte avec UltraEdit et en passant à l’hexadécimal). Donc, si le récepteur reçoit un flux d’octets qui commence par EF BB BF, il sait qu’il s’agit d’un codage UTF-8.





Précédent:Solutions d’erreurs courantes de Jackson
Prochain:Logiciel de codage de barres Barman !
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com