Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2008, 17h54   #1
Invité régulier
 
Inscription : mai 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 40
Points : 6
Points : 6
Par défaut Problème de charset avec un script ASP

Bonjour,

je procède actuellement à la refonte d'un site internet conçu à l'origine avec le charset windows-1252 et qui doit aujourd'hui fonctionner (entre autres modifications) en UTF-8.

Ce site comporte notamment un script ASP qui génère des pages d'après une base de données SQL, avec des balises de type : <§Prix§> qui insèrent le contenu du champ spécifié dans la page.

Or, le passage à l'UTF-8 rend ce script inopérant puisqu'il inscrit "en dur" la balise sans la remplacer par le résultat de la requête.

Si quelqu'un connaissait une syntaxe susceptible de remplacer les balises incriminées pour rétablir la fonctionnalité du script, je lui en serais bien reconnaissant....

Merci à touspour votre attention,

torobravo
torobravo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 19h08   #2
Invité régulier
 
Inscription : mai 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 40
Points : 6
Points : 6
Bon, j'ai réglé une partie de la question mais le problème persiste sous une autre forme.

Il suffisait de remplacer la balise dynamique <% par un autre symbole pour que les champs s'inscrivent dynamiquement dans la page. Le problème initial est donc réglé.

Toujours est-il que le texte des champs s'inscrit en charset windows-1252 et la page étant conçue en UTF-8, les caractères accentués ne fonctionnent pas. Ceci est d'autant plus gênant que la page contient d'autre éléments dynamiques qui, eux, ne s'affichent correctement qu'en UTF-8...

Quelqu'un aurait-il une suggestion ? Merci

Torobravo
torobravo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 20h28   #3
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 859
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 859
Points : 5 979
Points : 5 979
Salut,

Tu as un petit exemple?
Sinon, la fonction server.htmlencode te permet de convertir des caractères speciaux.
Ensuite, il faut modifier l'entete de la page, mais cela devrait suffire.

A+
Immobilis est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 20h43   #4
Invité régulier
 
Inscription : mai 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 40
Points : 6
Points : 6
Salut ! et merci pour ta réponse.

Voici le script qui génère la page:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
 
 
<%
 
server.scriptTimeout = 5*60
 
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
 
' Nettoyage du dossier
set fc = FSO.GetFolder(server.mapPath(".")).files
for each f in fc
	if f.name <> "default.asp" and f.name <> "generateur.asp" and f.name <> "modele.asp" then
		set fd = FSO.getFile(server.mapPath(".")&"\"&f.name)
		fd.Delete
	end if
next
 
if request.queryString("act")="clean" then response.redirect "default.asp"
 
' Lecture du modèle
set inF = FSO.OpenTextFile(server.mapPath("modele.asp"),1,false)
dy_modele = inF.readAll
inF.close
 
' CONNEXION
Set dy_Conn = Server.CreateObject("ADODB.Connection")
dy_Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../45260.mdb")
 
Set dy_RS = server.createobject("ADODB.Recordset")
dy_SQL= "SELECT * FROM Livre WHERE Web1=-1"
 
dy_RS.Open dy_SQL,dy_Conn , 3, 3
 
Function clean(txt)
	dim regEx
	Set regEx = New RegExp
	regEx.Global = True
	regEx.Pattern = "[àâ]"
	txt = regEx.REPLACE(txt,"a")
	regEx.Pattern = "[éèêë]"
	txt = regEx.REPLACE(txt,"e")
	regEx.Pattern = "[îï]"
	txt = regEx.REPLACE(txt,"i")
	regEx.Pattern = "[ôö]"
	txt = regEx.REPLACE(txt,"o")
	regEx.Pattern = "[ùûü]"
	txt = regEx.REPLACE(txt,"u")
	txt = replace(txt,"ç","c")
	regEx.Pattern = "[^a-zA-Z0-9 _-]+"
	txt = regEx.replace(txt,"")
	clean = replace(txt," ","_")
end function
 
dy_fld = Array("SusTitre","Auteur","Titre","Adresse","Collation","Reliure","IDLiv","Prix","Commentaire","RefBiblio","Commentaire_en","RefBiblio_en","Commentaire_es","RefBiblio_es","Commentaire_ca","RefBiblio_ca")
while not dy_RS.eof
	dy_page = dy_modele
	for i = 0 to 15
		if isnull(dy_RS(dy_fld(i))) then
			dy_page = replace(dy_page,"[\"&dy_fld(i)&"/]","")
		elseif dy_fld(i)="Prix" then
			if cInt(dy_RS(dy_fld(i)))>0 then
				dy_page = replace(dy_page,"[\"&dy_fld(i)&"/]",dy_RS(dy_fld(i)))
			else
				dy_page = replace(dy_page,"[\"&dy_fld(i)&"/]","Prix sur demande")
			end if
		else
			dy_page = replace(dy_page,"[\"&dy_fld(i)&"/]",dy_RS(dy_fld(i)))
		end if
	next
	' nom de fichier
	dy_nf = ""
	if not isnull(dy_RS("Auteur")) then dy_nf = dy_RS("Auteur")
	if not isnull(dy_RS("Titre")) then
		if dy_nf <>"" then dy_nf = dy_nf & " - "
		dy_nf = dy_nf & dy_RS("Titre")
	end if
	dy_nf = clean(left(dy_nf,100))
	dy_page = replace(dy_page,"[\Title/]",replace(left(dy_nf,50),"_"," "))
	dy_nf = dy_nf & "-" & dy_RS("IDLiv") & ".asp"
	dy_nf = replace(dy_nf,"_-","-")
	if left(dy_nf,1)="_" then dy_nf=mid(dy_nf,2)
	' Ecriture
	set inF = FSO.OpenTextFile(server.mapPath(dy_nf),2,true)
	inF.write dy_page
	inF.close
	dy_RS.moveNext
wend
dy_RS.close
 
' Déconnexion
dy_Conn.close : set dy_Conn=nothing
 
response.redirect "default.asp"
%>
Il faut dire qu'il est déjà ancien (2003)...

Comment utilise-t-on cette fonction server.htmlencode ?

Je serais très ravi si une solution pouvait être trouvée. A bientôt.

torobravo
torobravo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 21h11   #5
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 859
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 859
Points : 5 979
Points : 5 979
Un petit coup de
Immobilis est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 01h55   #6
Invité régulier
 
Inscription : mai 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 40
Points : 6
Points : 6
Bon, ben je dois être plutôt mauvais mais le "petit coup de Google" ne m'a pas permis de savoir exactement quoi faire... Je dirai même que cela a plutôt augmenté la confusion.

Je sais que Noël est déjà loin, mais si une bonne âme charitable passe par ici... et connaît les finesses du charset en asp...
torobravo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 19h30   #7
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 859
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 859
Points : 5 979
Points : 5 979
http://www.w3schools.com/asp/met_htmlencode.asp

Un très bon site à garder dans les signets.
Immobilis est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h46.


 
 
 
 
Partenaires

Hébergement Web