Le nom complet de boM est OrderByteMark, un caractère Unicode qui apparaît habituellement au début du texte pour identifier la séquence octet (Big/LittleEndian), et en plus d'identifier l'encodage (UTF-8/16/32), s'il apparaît au milieu du texte, Elle est interprétée comme zéro largeur de largeur..." . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Le nom complet de boM est Byte Order Mark, un caractère Unicode qui apparaît habituellement au début du texte pour identifier la séquence octet (Big/Little Endian), et en plus d'identifier l'encodage (UTF-8/16/32), s'il apparaît au milieu du texte, ceci est interprété comme zéro largeur sans rupture d'espace. Remarque : Pour une description détaillée des connaissances d'Unicode, veuillez consulter UTF-8, UTF-16, UTF-32 et BOM. Pour UTF-8/16/32, 8/16/32 dans leur nom se réfère au nombre de bits sont des unités codées, c'est-à-dire, leurs unités de codage sont 8/16/32 bits, convertis en octets est 1/2/4 octets, si elle est multi-octet, il est impliqué dans l'ordre octet, UTF-8 est encodé en octets simples, il n'y a donc pas d'ordre d'octet. Le principal avantage de UTF-8 est qu'il est compatible avec ASCII, mais si vous utilisez le BOM, l'avantage a disparu, et en outre, l'existence de la BOM peut causer certains problèmes, tels que les erreurs suivantes peuvent être causées par le BOM:
- Shell: Pas de fichier ou d'annuaire de ce type
- PHP: Avertissement: Impossible de modifier les informations d'en-tête - en-têtes déjà envoyés
Avant de discuter en détail de la détection et de la suppression des BOM dans l'encodage UTF-8, vous voudrez peut-être vous réchauffer avec un exemple :
Shell -curl -s http://phone.10086.cn/ . . . tête -1 . . . sed -n l 357?273?277
Comme indiqué ci-dessus, les trois premiers octets sont 357, 273, et 277, qui est l'octa-binaire BOM.
Shell -curl -s http://phone.10086.cn/ . . . tête -1 . . . hexdump -C0000000ef bb bf 3c 21 44 4f 43 54 59 50 45 20 68 74 6d . . .
Comme indiqué ci-dessus, les trois premiers octets sont EF, BB, BF, qui est un BOM hexadecimal. Remarque : Avec la page d'un site Web tiers, il n'y a aucune garantie que l'exemple sera toujours disponible. Lorsque vous faites réellement le développement de projet, vous pouvez faire face à des centaines de fichiers texte, s'il ya plusieurs fichiers mélangés dans le BOM, alors il est difficile à détecter, s'il n'y a pas de fichier texte UTF-8 avec BOM, vous pouvez écrire quelques-uns, les commandes pertinentes sont les suivantes:
Configurer l'encodage UTF-8 :
: setencoding fichier de fichier sutf-8
Ajouter BOM:
:: bombe placée
Supprimer le BOM:
: définir nobomb
Requête BOM:
: bombe placée ?
Comment puis-je détecter le BOM dans le code UTF-8 ?
Shell grep -r -I -l'''xEF'xBB'//path
Comment puis-je supprimer le BOM dans le code UTF-8 ?
Shell grep -r -I -l'?'xEF'xBB'///path xargs sed -i 's'''''''''xEF'xBB///;q'
Recommandation : Si vous utilisez SVN, vous pouvez ajouter le code pertinent dans le crochet pré-commit pour éliminer le BOM.
s!/bin/bashREPOS""1" TXN""2" SVNLOOK?/usr/bin/svnlookfor FILE in ($SVNLOOK-changed -t "$TXN" "$REPOS" int $NF') faire si $SVNLOOK chat -t "$TXN" "$REPOS" "$FILE" sgrep -q $'xEF'xBB';xBF'; FILE" 1 -2 sortie 1 fidone
Cet article utilise beaucoup de commandes shell, espace limité, sans élaborer, s'il n'est pas de comprendre le s'il vous plaît la recherche pour elle.
PS: Quelques autres lignes de commande:
| 1er |
awk's 'if'?if'?1)sub (/?xef?xbb?xbf/,");p")""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
| 3e |
queue --octets s.4 text.txt |
| 5e |
tail -c - 4 UTF8 et UTF8.nobom |
Deux autres cas d'exceptions de codage boM python utf-8 ont été partagés :
http://hi.baidu.com/leejun_2005/item/bf28ded296cb8ebf33db9096
http://hi.baidu.com/leejun_2005/item/8c8855757225835b0d0a0780