Page 1 sur 1

Ascii <> Unicode <> Utf8

Publié : mar. 10/nov./2009 18:29
par Le Soldat Inconnu
Un petit code pour transformer un fichier texte en Unicode

Code : Tout sélectionner

Procedure Analyse(Fichier.s)
	Debug Fichier
	NewList Ligne.s()
	If ReadFile(0, Fichier)
		Format = ReadStringFormat(0)
		Repeat
			AddElement(Ligne())
			Ligne() = ReadString(0, Format)
		Until Eof(0)
		CloseFile(0)
		If CreateFile(0, Fichier)
			WriteStringFormat(0, #PB_Unicode)
			ForEach Ligne()
				If ListIndex(Ligne()) = ListSize(Ligne()) - 1
					WriteString(0, Ligne(), #PB_Unicode)
				Else
					WriteStringN(0, Ligne(), #PB_Unicode)
				EndIf
			Next
			CloseFile(0)
		EndIf
	EndIf
	
EndProcedure

Fichier.s = OpenFileRequester("Ascii Unicode", GetCurrentDirectory(), "Tous les fichiers|*.*", 0, #PB_Requester_MultiSelection)
While Fichier
	Analyse(Fichier)
	Fichier = NextSelectedFileName()
Wend
Un fichier texte en UTF8

Code : Tout sélectionner

Procedure Analyse(Fichier.s)
	Debug Fichier
	NewList Ligne.s()
	If ReadFile(0, Fichier)
		Format = ReadStringFormat(0)
		Repeat
			AddElement(Ligne())
			Ligne() = ReadString(0, Format)
		Until Eof(0)
		CloseFile(0)
		If CreateFile(0, Fichier)
			WriteStringFormat(0, #PB_UTF8)
			ForEach Ligne()
				If ListIndex(Ligne()) = ListSize(Ligne()) - 1
					WriteString(0, Ligne(), #PB_UTF8)
				Else
					WriteStringN(0, Ligne(), #PB_UTF8)
				EndIf
			Next
			CloseFile(0)
		EndIf
	EndIf
	
EndProcedure


Fichier.s = OpenFileRequester("Ascii Unicode", GetCurrentDirectory(), "Tous les fichiers|*.*", 0, #PB_Requester_MultiSelection)
While Fichier
	Analyse(Fichier)
	Fichier = NextSelectedFileName()
Wend
Et enfin, en ASCII

Code : Tout sélectionner

Procedure Analyse(Fichier.s)
	Debug Fichier
	NewList Ligne.s()
	If ReadFile(0, Fichier)
		Format = ReadStringFormat(0)
		Repeat
			AddElement(Ligne())
			Ligne() = ReadString(0, Format)
		Until Eof(0)
		CloseFile(0)
		If CreateFile(0, Fichier)
			; WriteStringFormat(0, #PB_Unicode)
			ForEach Ligne()
				If ListIndex(Ligne()) = ListSize(Ligne()) - 1
					WriteString(0, Ligne(), #PB_Ascii)
				Else
					WriteStringN(0, Ligne(), #PB_Ascii)
				EndIf
			Next
			CloseFile(0)
		EndIf
	EndIf
	
EndProcedure

Fichier.s = OpenFileRequester("Ascii Unicode", GetCurrentDirectory(), "Tous les fichiers|*.*", 0, #PB_Requester_MultiSelection)
While Fichier
	Analyse(Fichier)
	Fichier = NextSelectedFileName()
Wend
Ils sont tous sur le même principe, votre fichier texte dois avoir un indicateur de format en début de fichier (voir l'aide sur ReadStringFormat(), WriteStringFormat() )

l'intérêt ?

J'ai passer un code en mode Unicode, donc j'ai du traduire mes fichiers annexe de ASCII vers Unicode. Donc ça sert à ça.

L'UTF8 sert pour les fichier de préférence ( voir CreatePreferences() ) quand le code en en mode Unicode (vous pouvez utiliser le ASCII ou l'UTF8 mais pas l'Unicode sur les fichiers de préférences)

Re: Ascii <> Unicode <> Utf8

Publié : jeu. 19/nov./2009 14:36
par lionel_om
Pourquoi ne pas passer en parametre le type d'encodage souhaite ???
Car les fonctions sont identiques...

/Liå

Re: Ascii <> Unicode <> Utf8

Publié : ven. 20/nov./2009 22:32
par Le Soldat Inconnu
Parce que j'ai fais 3 exe :mrgreen: Na !