Ascii <> Unicode <> Utf8

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Ascii <> Unicode <> Utf8

Message 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)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Re: Ascii <> Unicode <> Utf8

Message par lionel_om »

Pourquoi ne pas passer en parametre le type d'encodage souhaite ???
Car les fonctions sont identiques...

/Liå
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Ascii <> Unicode <> Utf8

Message par Le Soldat Inconnu »

Parce que j'ai fais 3 exe :mrgreen: Na !
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre