[RESOLU]Problème avec fichier utf 8

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

[RESOLU]Problème avec fichier utf 8

Message par Mesa »

Voici ce que fait le code suivant:

Création d'un fichier texte utf8 (text1.txt) s'il n'existe pas avec des lettres accentuées à l'intérieur.
Création d'un fichier utf8 vierge (index.html) puis copie du premier fichier (text1.txt) à l’intérieur de index.html
Ajout de texte dans index.html

index.html est donc une copie de text1.txt avec du texte en plus.
(Je ne veux pas faire un append sur text1.txt) mais les lettres accentuées deviennent n'importe quoi.

Comment faire pour récupérer mes lettres accentuées ?

Code : Tout sélectionner


;Création d'un fichier texte s'il n'existe pas contenant des lettres accentuées
If FileSize("entete.txt")=-1 ; fichier inexistant
  If CreateFile(0, "entete.txt")  ; alors création d'un nouveau fichier texte...
  WriteStringN(0,"<!DOCTYPE HTML PUBLIC "+Chr(34)+"-//W3C//DTD HTML 4.01 Transitional//EN"+Chr(34)+" "+Chr(34)+"http://www.w3.org/TR/html4/loose.dtd"+Chr(34)+">", #PB_UTF8)
	WriteStringN(0,"<html lang="+Chr(34)+"fr"+Chr(34)+" >", #PB_UTF8)
	WriteStringN(0,"<head>", #PB_UTF8)
	WriteStringN(0,"<meta http-equiv="+Chr(34)+"content-type"+Chr(34)+" content="+Chr(34)+"text/html;charset=utf-8"+Chr(34)+">", #PB_UTF8)
	WriteStringN(0,"<title>Titre</title>", #PB_UTF8)
	WriteStringN(0,"<meta http-equiv="+Chr(34)+"content-style-type"+Chr(34)+" content="+Chr(34)+"text/css"+Chr(34)+">", #PB_UTF8)
	WriteStringN(0,"</head>", #PB_UTF8)
  WriteStringN(0,"<body>", #PB_UTF8)
	WriteStringN(0,"aàeéèêëçùz", #PB_UTF8) ;contenant des lettres accentuées
		CloseFile(0); Ferme le fichier
	Else
		MessageRequester("Information","Impossible de créer le fichier 'entete.txt'. Arrêt du programme")
		End
	EndIf 
EndIf

; création d'un nouveau fichier texte...
If CreateFile(1, "index.html")         
	;ouvrir de text1.txt et copie de son contenu dans index.html
	If ReadFile(0, "entete.txt")  ; Si le fichier peut être lu , on continue...
		;Debug ReadStringFormat(0)
		
		While Eof(0) = 0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
			;Debug ReadString(0)      ; Affiche ligne par ligne le contenu du fichier
			;       tmp$=tmp$+ReadString(0)
			WriteStringN(1,ReadString(0,#PB_UTF8 ),#PB_UTF8);
		Wend
		
		CloseFile(0)               ; Ferme le fichier précédemment ouvert
		
	Else
		MessageRequester("Information","Impossible d'ouvrir le fichier 'entete.txt'. Arrêt du programme")
		End
	EndIf  
	
	;ajouter un texte à index.html  
	tmp$="<br>ÇÂÊÄËÔÖÛÜ<br>"
	WriteString(1,tmp$,#PB_UTF8 )
	WriteString(1,"</body>",#PB_UTF8 )
WriteString(1,"</html>",#PB_UTF8 )
	
	CloseFile(1)                  ; ferme le fichier index.html et enregistre les données
Else
	MessageRequester("Information","Impossible de créer le fichier 'index.html'. Arrêt du programme")
EndIf


;On ouvre index.html
Resultat = RunProgram("index.html")

	If ReadFile(0, "index.html")  ; Si le fichier peut être lu , on continue...
			
						While Eof(0) = 0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
			Debug ReadString(0,#PB_UTF8)      ; Affiche ligne par ligne le contenu du fichier
			
		Wend
		CloseFile(0); Ferme le fichier précédemment ouvert
		
	Else
		MessageRequester("Information","Impossible d'ouvrir le fichier 'index.html'. Arrêt du programme")
		End
	EndIf  
	
;   Debug  #PB_Ascii;  : Aucun BOM détecté. C'est probablement un fichier texte standard
;   Debug  #PB_UTF8 ;  : BOM UTF-8 détecté.
;   Debug #PB_Unicode;: BOM UTF-16 (little endian) détecté.
;   Debug #PB_UTF16BE;: BOM UTF-16 (big endian) détecté.
;   Debug #PB_UTF32  ;: BOM UTF-32 (little endian) détecté.
;   Debug #PB_UTF32BE;: BOM UTF-32 (big endian) détecté.
[edit] Ce code fonctionne maintenant.

Mesa.
Dernière modification par Mesa le lun. 10/juin/2013 16:37, modifié 1 fois.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Problème avec fichier utf 8

Message par nico »

Correction:
Ligne 3 mettre If CreateFile(0, "text1.txt") tu as oublié le ".txt"
ligne 48 mettre Debug ReadString(0,#PB_UTF8 ) tu as oublié le #PB_UTF8

Ensuite, lorsque tu compiles, le résultat attendu est bon, dans le debugger, on a bien les lettres accentuées; par contre ton fichier html ne les affiche pas mais c'est normal car il n'y a pas d'en tête.

Ton entête doit être du genre (voir la balise HEAD):

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="content-type">
    <title>Ton titre</title>
  </head>
  <body>

// Ton code html que tu rajoutes ici

  </body>
</html>
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Problème avec fichier utf 8

Message par Mesa »

Merci.

Résolu.

Mesa.
Répondre