Comment puis-je supprimer  dès le début d'un fichier?
J'ai un fichier CSS qui a l'air bien quand je l'ouvre à l'aide de gedit, mais quand il est lu par PHP (pour fusionner tous les fichiers CSS en un), ce CSS a les caractères suivants ajouté il: 
PHP supprime tous les espaces, de manière aléatoire  dans le milieu du code bousille la chose entière. Comme je l'ai mentionné, je ne peux pas vraiment voir ces personnages quand j'ouvre le fichier dans gedit, donc je ne peux pas les enlever très facilement.
J'ai googlé le problème, et il y a clairement quelque chose de mal avec l'encodage du fichier, ce qui est logique, étant comme je l'ai fait passer les fichiers de Linux/Windows serveurs via ftp et rsync, avec une gamme d'éditeurs de texte. Je ne connais pas vraiment sur le codage de caractère, donc de l'aide serait appréciée.
Si cela peut aider, le fichier est enregistré au format UTF-8, et gedit ne me permet pas de l'enregistrer dans la norme ISO-8859-15 (le document contient un ou plusieurs caractères qui ne peuvent pas être codées à l'aide de la spécifié de codage de caractères). J'ai essayé de l'enregistrer avec Windows et Linux fins de ligne, mais ni aidé.
- Cela semble résoudre le problème. 95isalive.com/expression/index.html
- Quelqu'un strip-nous de la NOMENCLATURE
- stackoverflow.com/q/20778921/995714
Vous devez vous connecter pour publier un commentaire.
Trois mots pour vous:
Marque d'Ordre des octets (BOM)
C'est la représentation de l'UTF-8 BOM en ISO-8859-1. Vous devez indiquer à votre éditeur de ne pas utiliser les Nomenclatures ou utiliser un autre éditeur de bande de sortir.
D'automatiser la NOMENCLATURE de l'enlèvement, vous pouvez utiliser
awk
comme indiqué dans cette question.Comme une autre réponse dit, le mieux serait de PHP à fait interpréter la NOMENCLATURE correctement, pour cela vous pouvez utiliser
mb_internal_encoding()
, comme ceci:EF BB BF
, cependant
estC3 AF C2 BB C2 BF
—de sorte que votre réponse ne fait pas de sens à cet égard.Dans PHP, vous pouvez effectuer les opérations suivantes pour supprimer tous les non caractères, y compris le caractère en question.
Ouvrez votre fichier dans Notepad++. À partir de la Encodage menu, sélectionnez Convertir en UTF-8 sans BOM, enregistrez le fichier, remplacez l'ancien fichier avec ce nouveau fichier. Et il va travailler, sacrément sûr.
Pour ceux avec un accès shell voici une petite commande pour trouver tous les fichiers avec la NOMENCLATURE définie dans le répertoire public_html - assurez-vous de le changer à ce que votre chemin d'accès correct sur votre serveur est
Code:
et si vous êtes à l'aise avec la vi de l'éditeur, ouvrez le fichier dans vi:
Et entrez la commande de suppression de la NOMENCLATURE:
Enregistrer le fichier:
grep -rlI $'\xEF\xBB\xBF' .
pour ignorer les fichiers binaires.MOB est juste une séquence de caractères ($EF $BB $BF pour l'UTF-8), il suffit donc de les supprimer à l'aide de scripts ou de configurer l'éditeur de sorte qu'il n'est pas ajouté.
De La suppression de la NOMENCLATURE de l'UTF-8:
Je suis sûr qu'il se traduit par PHP facilement.
$string = preg_replace('/\x{EF}\x{BB}\x{BF}/','',$string);
. avant d'utiliser cette reconsidérer si vous ne pouvez pas résoudre le problème à la source au lieu de cela.Pour moi, cela a fonctionné:
Si je supprime cette méta,  apparaît de nouveau. Espérons que cela aide quelqu'un...
Je ne connais pas le PHP, donc je ne sais pas si c'est possible, mais la meilleure solution serait de lire le fichier en UTF-8 plutôt qu'un autre encodage. La NOMENCLATURE est en fait une LARGEUR NULLE PAS de RUPTURE de l'ESPACE. C'est l'espace, de sorte que si le fichier en cours de lecture dans le bon encodage (UTF-8), puis la NOMENCLATURE serait interprété comme des espaces et il aurait ignoré dans le fichier CSS.
Aussi, un autre avantage de la lecture du fichier dans le bon encodage, c'est que vous n'avez pas à vous soucier de caractères d'être mal interprété. Votre éditeur est vous dire que le code de la page que vous souhaitez enregistrer dans n'aurez pas de tous les personnages que vous avez besoin. Si PHP est alors la lecture du fichier dans le codage incorrect, alors il est très probable que d'autres personnages en plus de la NOMENCLATURE sont silencieusement mal interprété. Utiliser l'UTF-8 partout, et ces problèmes disparaissent.
Vous pouvez utiliser
Remplacement avec awk semble fonctionner, mais il n'est pas en place.
grep -rl $'\xEF\xBB\xBF' * | xargs-vim -e -c 'argdo set fileencoding=utf-8|set encoding=utf-8| set nobomb| wq'
grep -rlI $'\xEF\xBB\xBF' .
pour ignorer les fichiers binaires. Et aussi.
mieux alors*
ici.J'ai eu le même problème avec la NOMENCLATURE figurant dans certains de mes fichiers PHP ().
Si vous utilisez PhpStorm vous pouvez définir à la touche de raccourci à supprimer dans les Paramètres -> Paramètres IDE -> Keymap -> Menu Principal - > File -> Supprimer de la NOMENCLATURE.
Dans Notepad++, choisissez le "Codage" de menu, puis sur "Encoder en UTF-8 sans BOM". Puis enregistrez.
Voir Débordement de Pile question Comment faire le bloc-notes pour enregistrer le texte en UTF-8 sans BOM?.
Ouvrir le fichier PHP en question, dans Notepad++.
Cliquez sur le Codage en haut et le changement de "l'Encodage en UTF-8 sans BOM" juste "de l'Encodage en UTF-8". Enregistrer et enregistrez le fichier sur votre serveur.
Même problème, solution différente.
Une ligne dans le fichier PHP a l'impression XML en-têtes (qui utilisent le même début/fin des balises PHP). Ressemble le code à l'intérieur de ces balises définir l'encodage, et a été exécuté à l'intérieur de PHP qui a entraîné les caractères étranges. De toute façon, voici la solution:
Si vous avez besoin d'être en mesure de supprimer la NOMENCLATURE à partir de codé en UTF-8 fichiers, vous devez d'abord obtenir un éditeur qui est au courant d'entre eux.
Personnellement, j'utilise E Éditeur De Texte.
En bas à droite, il y a des options pour l'encodage des caractères, y compris la NOMENCLATURE de la balise. Chargez votre fichier, désactivez l'Ordre des Octets de Marqueur s'il est sélectionné, enregistrez à nouveau, et il devrait être fait.
Le texte d'Alt http://oth4.com/encoding.png
E n'est pas libre, mais il y a un essai gratuit, et il est un excellent éditeur (limité TextMate de compatibilité).
Vous pouvez l'ouvrir en PhpStorm et cliquez-droit sur votre fichier et cliquez sur Supprimer NOMENCLATURE...
Ici est une autre bonne solution pour le problème de NOMENCLATURE. Ces deux VBScript (.vbs) les scripts.
Un pour trouver la NOMENCLATURE dans un fichier et un pour TUER les damnés de la NOMENCLATURE dans le fichier. Il fonctionne très bien et est facile à utiliser.
Il suffit de créer un .vbs fichier et collez le code suivant dans il.
Vous pouvez utiliser le script VBScript simplement par glisser-déposer le fichier suspect sur le .fichier vbs. Il vous dira si il y a un MOB ou pas.
Si il vous dit il y a de la NOMENCLATURE, et créez la seconde .vbs fichier avec le code suivant et faites glisser le suspicios fichier sur l' .fichier vbs.
Le code est à partir de Heiko Jendreck.
Dans PHPStorm, pour de multiples fichiers et BOM pas nécessairement au début du fichier, vous pouvez rechercher
\x{FEFF}
(Expression Régulière) et les remplacer par rien.Même problème, mais seulement affecté un fichier alors je viens de créer un fichier vide, copier/coller le code à partir du fichier d'origine dans le nouveau fichier, puis remplacer le fichier d'origine. Pas de fantaisie, mais cela a fonctionné.
Utilisation Total Commander à la recherche pour tous les BOMed fichiers:
Manière élégante de recherche pour les fichiers UTF-8 avec BOM?
Ouvrir ces fichiers dans un vrai éditeur (qui reconnaît BOM) comme Eclipse.
Changer l'encodage du fichier ISO (clic droit, propriétés).
Couper  à partir du début du fichier, enregistrer
Changer l'encodage du fichier en arrière de l'UTF-8
...et ne pense même pas à l'aide de n...d nouveau!
J'ai eu le même problème. Le problème était que l'un de mes fichiers php était en utf-8 (le plus important, la configuaration de fichier qui est inclus dans tous les fichiers php).
Dans mon cas, j'avais 2 solutions différentes qui a fonctionné pour moi :
Tout d'abord, j'ai changé la Configuration d'Apache en utilisant AddDefaultCharsetDirective dans les fichiers de configuration (ou dans .htaccess). Cette solution forces Apache pour utiliser le bon encodage.
La deuxième solution a été de changer le mauvais encodage du fichier php.
Vérifier sur votre
index.php
, trouver "...charset=iso-8859-1
" et remplacer par "...charset=utf-8
".Peut-être que ça marchera.