begin process at 2010 02 10 08:33:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > SUPPRIMER LES TAG BOM DANS FICHIER UTF-8

SUPPRIMER LES TAG BOM DANS FICHIER UTF-8


 Information sur la source

Note :
Aucune note
Catégorie :Fichiers / Disque Source .NET ( DotNet ) Classé sous :utf8, bom, fichier Niveau :Débutant Date de création :23/04/2008 Date de mise à jour :24/04/2008 21:47:51 Vu / téléchargé :6 407 / 109

Auteur : gluk

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce programme vous permettra du supprimer les tags au début des fichiers UTF-8 BOM.
J’ai rajouté la possibilité de mettre des extensions pour le scan.

Voici l'url pour les fainéants, le programme y est déjà compilé :
http://hidalgoemmanuel.info/csharp-net/supprimer -les-tag-bom-dans-fichier-utf-8.html

Source

  • /*
  • * Created by SharpDevelop.
  • * User: hidalgo emmanuel
  • * Date: 24/04/2008
  • * Time: 12:20
  • *
  • * To change this template use Tools | Options | Coding | Edit Standard Headers.
  • */
  • using System;
  • using System.IO;
  • using System.Collections;
  • namespace delete_tag_utf8_bom_win
  • {
  • /// <summary>
  • /// Description of ScanUtf8Bom.
  • /// </summary>
  • public class ScanUtf8Bom
  • {
  • public string sLogFichiers = "";
  • private string[] _oExtension;
  • public ScanUtf8Bom( string[] oExtensions ){
  • this._oExtension = oExtensions;
  • }
  • public void ScanFolder( DirectoryInfo oDirectory ){
  • foreach( FileInfo oFileInfo in oDirectory.GetFiles() ){
  • string sExtension = oFileInfo.Extension;
  • if( sExtension.Length > 1 && sExtension.Substring( 0, 1 ) == "." )
  • sExtension = sExtension.Substring( 1 );
  • string sOkExtension = Array.Find( this._oExtension, delegate ( string sExt ) { return sExt == sExtension; } );
  • if( sOkExtension != null && this.FileIsBOM( oFileInfo.FullName ) )
  • this.DeleteTagBom( oFileInfo.FullName );
  • }
  • foreach( DirectoryInfo oDirectoryChild in oDirectory.GetDirectories() )
  • if( oDirectoryChild.Name != ".svn" )
  • this.ScanFolder( oDirectoryChild );
  • }
  • public bool FileIsBOM( string sFile ){
  • byte[] oData = new Byte[ 3 ];
  • byte[] oBom = new Byte[ 3 ];
  • oBom[ 0 ] = 239;// -> i
  • oBom[ 1 ] = 187;// -> »
  • oBom[ 2 ] = 191;// -> ¿
  • FileStream oFileStream = new FileStream( sFile, FileMode.Open );
  • oFileStream.Read( oData, 0, 3 );
  • for( int i = 0; i < oData.Length; i++ )
  • if( oData[ i ] != oBom[ i ] )
  • return false;
  • oFileStream.Close();
  • return true;
  • }
  • public void DeleteTagBom( string sFile ){
  • this.sLogFichiers += "delete tag in : " + sFile + "\r\n";
  • FileInfo oFileInfo = new FileInfo( sFile );
  • byte[] oData = new byte[ oFileInfo.Length ];
  • FileStream oFileStream = new FileStream( sFile, FileMode.Open );
  • oFileStream.Read( oData, 0, (int)oFileInfo.Length );
  • oFileStream.Close();
  • File.Delete( sFile );
  • oFileStream = new FileStream( sFile, FileMode.Create );
  • oFileStream.Write( oData, 3, oData.Length - 3 );
  • oFileStream.Close();
  • }
  • }
  • }
/*
 * Created by SharpDevelop.
 * User: hidalgo emmanuel
 * Date: 24/04/2008
 * Time: 12:20
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */

using System;
using System.IO;
using System.Collections;

namespace delete_tag_utf8_bom_win
{
	/// <summary>
	/// Description of ScanUtf8Bom.
	/// </summary>
	public class ScanUtf8Bom
	{
		public string sLogFichiers = "";
		private string[] _oExtension;
		
		public ScanUtf8Bom( string[] oExtensions ){
			this._oExtension = oExtensions;
		}
		
		public void ScanFolder( DirectoryInfo oDirectory ){
			foreach( FileInfo oFileInfo in oDirectory.GetFiles() ){
				string sExtension = oFileInfo.Extension;
				if( sExtension.Length > 1 && sExtension.Substring( 0, 1 ) == "." )
					sExtension = sExtension.Substring( 1 );
				string sOkExtension = Array.Find( this._oExtension, delegate ( string sExt ) { return sExt == sExtension; } );
				if( sOkExtension != null && this.FileIsBOM( oFileInfo.FullName ) )
					this.DeleteTagBom( oFileInfo.FullName );
			}
			foreach( DirectoryInfo oDirectoryChild in oDirectory.GetDirectories() )
				if( oDirectoryChild.Name != ".svn" )
					this.ScanFolder( oDirectoryChild );
		}
		
		public bool FileIsBOM( string sFile ){
			byte[] oData = new Byte[ 3 ];
			byte[] oBom = new Byte[ 3 ];
			oBom[ 0 ] = 239;// -> i
			oBom[ 1 ] = 187;// -> »
			oBom[ 2 ] = 191;// -> ¿
			
			FileStream oFileStream = new FileStream( sFile, FileMode.Open );
			oFileStream.Read( oData, 0, 3 );
			
			for( int i = 0; i < oData.Length; i++ )
				if( oData[ i ] != oBom[ i ] )
					return false;
			
			oFileStream.Close();
			
			return true;
		}
		
		public void DeleteTagBom( string sFile ){
			this.sLogFichiers += "delete tag in : " + sFile + "\r\n";
			
			FileInfo oFileInfo = new FileInfo( sFile );
			byte[] oData = new byte[ oFileInfo.Length ];
			
			FileStream oFileStream = new FileStream( sFile, FileMode.Open );
			oFileStream.Read( oData, 0, (int)oFileInfo.Length );
			oFileStream.Close();
			
			File.Delete( sFile );
			
			oFileStream = new FileStream( sFile, FileMode.Create );
			oFileStream.Write( oData, 3, oData.Length - 3 );
			oFileStream.Close();
		}
	}
}

 Conclusion

Ce programme vous permet de supprimer les tags BOM (souvent invisible) de l'ensemble des fichiers d'un répertoire.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

24 avril 2008 13:35:18 :
Il y a maintenant une classe à part.
24 avril 2008 21:47:51 :
Je fourni l'url ou les personnes pourront récupéré le programme déjà compilé, ligne de commande et window.

 Sources de la même categorie

Source avec Zip PILOTER WORD VIA MICROSOFT.OFFICE.INTEROP.WORD par whismeril
Source avec Zip PILOTER EXCEL VIA MICROSOFT.OFFICE.INTEROP.EXCEL par whismeril
Source avec Zip Source .NET (Dotnet) CHECK IDENTICAL FILES par eldim
Source avec Zip Source avec une capture Source .NET (Dotnet) RICHTEXTBOX NUMÉROTÉ (NUMÉROS DE LIGNES) par jray
Source avec Zip Source avec une capture SURVEILLER FICHIERS CRÉÉS AVEC FILESYSTEMWATCHER AMÉLIORÉ par TheOnlyMaX

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) RECHERCHE ET GESTION DE FICHIERS PERSONNALISÉES par JeremyLecouvert
Source .NET (Dotnet) GREP POUR WINDOWS par Warny
Source avec Zip Source .NET (Dotnet) CHECK IDENTICAL FILES par eldim
Source .NET (Dotnet) PARSER DE NODE XML ALTERNATIF par bubbathemaster
Source .NET (Dotnet) C# - OBTENIR SI LE FICHIER EST EN UTF8 OU ANSI par fabrice69

Commentaires et avis

Commentaire de sebmafate le 23/04/2008 13:47:23 administrateur CS

1- Pourquoi avoir tout mis  dans le program.cs ?
2- "Je fournis également le code source, plus secure quand on est un peu 'parano' :)" : en même codes-sources est une communauté de partage de sources... donc, pas de codes... pas de fiche ici.
3- Les exe sont supprimés des fichiers zip.

Commentaire de gluk le 23/04/2008 14:40:17

1 - et pourquoi pas !
2 - euhh, sinon t'as l'air débordé toi :) pense a faire des étirements, pour éviter les claquages !
3 - merci pour l'info

Sinon j'utilise ce code pour mes projets web, çà supprime tous les caractères pourris en début de fichier.
Je pourrai améliorer le programme en y incluant les extensions à traiter (php,asp,html,html,...), ou même faire une application en fenêtre (mais la je suis pas sûre que ça fonctionne sous linux).

Commentaire de sebmafate le 24/04/2008 12:14:19 administrateur CS

Merci de mettre à jour la source pourqu'elle devienne réutilisable.

Commentaire de gluk le 24/04/2008 13:36:50

Cool, merci :)
La classe est maintenant dans un fichier à part.
J'ai rajouté la possibilité de mettre des extensions pour le scan.

Commentaire de tmcuh le 25/04/2008 10:59:47

Les tag BOM tu aurais dis MMYZ c'était le même ^^ ... quand on ne connait pas la finalité d'un code source avant de le télécharger, ça nous donne pas envie de le "découvrir", d'autant que L'utf-8 est une normalisation d'encodage, donc je vois pas ce que le terme vient faire là... Si on passe en UTF-32 ça marche toujours?

... s'en va sceptique

Commentaire de gluk le 25/04/2008 12:14:14

C'est vrai, mais je n'ai pas testé avec un UTF-32--> pas eu besoin de me mettre là dedans.
C'est surtout un outil pour le développement WEB, ça aide à la supprimer les erreurs de hearder en PHP.
Dans le listing des fichiers nettoyés on retrouve aussi des CSS et JS, ça prouve que les éditeurs inclussent les tags BOM en début de fichier.
Y a toujours moyen de paramétrer l'ide avec lequel ou développe pour désactiver le BOM.
Mais quand on récupère un projet, avec des tags BOM sur tout les fichiers, il faut se les taper à la main ...(crampe à la main)

Voila, ça sert juste à automatiser le processus.

Commentaire de coq le 26/04/2008 18:02:17 administrateur CS

BOM = Byte Order Mark
Il est constitué du caractère U+FEFF écrit en début de fichier permettant de déterminer l'endianess

Ainsi on a :
UTF-16 Little Endian : FF FE
UTF-16 Big Endian    : FE FF
UTF-32 Little Endian : FF FE 00 00
UTF-32 Big Endian    : 00 00 FE FF

Pour UTF-8 c'est EF BB BF, il indique juste qu'on a affaire à de l'UTF-8 et ne donne pas réellement l'ordre comme UTF-8 n'est pas sensible à ce problème d'endianess.

On peut se permettre de l'enlever en UTF-8 sans trop de danger (c'est relatif) par contre sur de l'UTF-16 ou UTF-32 ça serait relativement dangereux, d'ailleurs je me demande même s'il n'est pas carrément obligatoire.
Par contre ça serait peut être mieux de faire en sorte qu'il soit géré à l'autre bout plutôt que de sacrifier les fichiers et s'exposer à des problèmes assez vicieux par la suite, notamment lors de l'édition par une personne tierce.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Problème de lecture de fichier en UTF8 [ par P0lO ] Bonjour à tous! Je code en C# pour le Compact FrameworkMon problème est le suivant pour un de mes programmes je doit créer et utiliser des fichiers d' Problème encoding utf8... [ par PeTeRsLaStAr ] Salutations, amis du C# :) (ou la... faut que j'arrête WOW, ça me réussit pas...)Je souhaiterais écrire un fichier (suite à un flux de caractères) de Comment ouvrir un fichier qui est stocké dans le répertoir bin [ par hred1 ] Bonjour, Je repose ma question, donc l'idée c'est pouvoir ouvrir un document word stocké dans le fichier bin plus précisement je souhaite stocker le d dll dans le general assembly cache [ par wally88 ] Bonjour, j'ai fais une application avec visual c# express 2005 + firebird.Je souhaite la publier, cela fonctionne. Mais quand j installe l'application Ressources en C# fichier resx [ par dgelekid ] Bonjour à tous,Voilà je cherche à ouvrir un fichier (.dot) encapsuler dans mon projet C#.Mon fichier encapsulé est au format Byte[] et je n'arrive pas PB: Lecture fichier xml avec un dataset [ par Manu94600 ] Salut à tous, Je travail en ce moment sur un projet de création de fichiers pivots.Donc j'ai une série de fichiers xml avec leur xsd, qu'on reçoit.J Mise à jour d'un label [ par dreamerT ] Bonjour !J'ai un petit problème avec le code c# qui va suivre.Il s'agit d'une winform simple contenant un label (label1), une progressbar (progressbar Ajouter automatiquement numéro de version au fichier msi généré [ par Flashy Warrior ] Bonjour,J'ai fini de développer la première version de mon application, et j'ai créé un projet pour générer un package d'installation (fichier Setup.e Lire/recuperer MPEG header [ par boutnell ] Salut tout le monde.Je souhaiterai lire le header des fichier mpeg pour pouvoir par exemple recuperer des informations sur le fichier.Voici un lien tr ouverture/fermeture fichier LOG [ par babe59 ] Bonjour,Dans mon appli, je fais une classe pour écrire mes messages d'erreur dans un fichier texte. L'idée est que je version ces fichiers de log afin


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales