OVH Cloud OVH Cloud

Fso et caractéres spéciaux

10 réponses
Avatar
Yann
Bonjour,
je dois à partir d'un script en vbs rajouter la ligne
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
dans un fichier .HTM
mais le problème c'est qu'il y a des caractéres spéciaux et celà ne
fonctionne pas en utilisant FSO.
Merci d'avance
Yann

10 réponses

Avatar
Lavache
"Yann" a écrit dans le message de news:
43e9cfa7$0$11095$
Bonjour,
je dois à partir d'un script en vbs rajouter la ligne
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
dans un fichier .HTM
mais le problème c'est qu'il y a des caractéres spéciaux et celà ne
fonctionne pas en utilisant FSO.
Merci d'avance
Yann

replace les caractère spéciaux par le code ascii exemple Chr(34) donne "


Sébas

Avatar
Yann
"Lavache" a écrit dans le message de news:
%23$

"Yann" a écrit dans le message de news:
43e9cfa7$0$11095$
Bonjour,
je dois à partir d'un script en vbs rajouter la ligne
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
dans un fichier .HTM
mais le problème c'est qu'il y a des caractéres spéciaux et celà ne
fonctionne pas en utilisant FSO.
Merci d'avance
Yann

replace les caractère spéciaux par le code ascii exemple Chr(34) donne "


Sébas



c'est bon j'ai trouvé la solution il faut doubler les "
Yann


Avatar
jbongran
Yann wrote:
Bonjour,
je dois à partir d'un script en vbs rajouter la ligne
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
dans un fichier .HTM
mais le problème c'est qu'il y a des caractéres spéciaux et celà ne
fonctionne pas en utilisant FSO.
Merci d'avance
Yann


En ligne de commande, il suffit de creer le fichier contenant <meta
http-equiv="Content-Type" content="text/html; charset=utf-8" >
puis de faire un simple copy /A fichier_entête + fichier_original /a
fichier_resultant /A
Evidemment cela ne fonctionne que si le texte à ajouter est à mettre en
début de fichier, ce qui ne doit pas être le cas ici puisque les balises
metas doivent être dans la section head de la page
Je sors ;-)

Avatar
Fred
Dans : news:43e9cfa7$0$11095$,
Yann disait :
Bonjour,
je dois à partir d'un script en vbs rajouter la ligne
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
dans un fichier .HTM
mais le problème c'est qu'il y a des caractéres spéciaux et celà ne
fonctionne pas en utilisant FSO.
Merci d'avance
Yann


Ça ne peut pas marcher. Ou plutôt, si, cela «semble» fonctionner avec le
choix de l'Unicode, car le navigateur reconnaît qu'il s'agit d'Unicode
et «refuse» donc l'encodage UTF-8 spécifié dans le corps du document. On
le voit dans les menus du navigateur (Unicode).

Pour t'en convaincre, essaie ce petit script en faisant varier la
constante Tristate de l'OpenTextFile, et en ouvrant ensuite le fichier
test.htm créé avec un navigateur.

8<-------------
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8

Const TristateUseDefault = -2 'encodage par default.
Const TristateTrue = -1 'Unicode.
Const TristateFalse = 0 'ASCII.

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oTS = oFSO.OpenTextFile("test.htm", ForWriting, True,
TristateUseDefault)
oTS.Write("<html><head>")
oTS.Write("<meta http-equiv=""Content-Type"" content=""text/html;
charset=utf-8"">")
oTS.Write("</head><body><p>éèàç¤</p></body></html>")
oTS.Close
8<-------------------

Les seuls choix possibles sont donc ASCII, Unicode et Défaut (en général
Windows-1252).
Et pas d'UTF-8 disponible.
Avec ASCII et Default, l'erreur est flagrante.
La solution serait alors de reprendre le fichier généré en Unicode avec
bloc-note et de l'enregistrer en choisissant l'utf-8.

La meilleure solution est donc celle de jbongran à mon avis (qui est
sorti trop tôt ;-) )



--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

Avatar
Jean
Et pas d'UTF-8 disponible


Pour Windows Millenium, Windows 2000 et Windows XP+ voir mon message
ici :

http://groups.google.com/group/microsoft.public.scripting.wsh/msg/f73db70de1ef2cbf?dmode=source&hl=fr

c'est à présent documenté ici :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Print_r/hh/Print_r/webfnc_e31e8dae-76bb-4250-9d16-090a987c0dbf.xml.asp

Si je construis une fonction :

Function UTF8(quoi)
UTF8=CreateObject("OlePrn.OleCvt").ToUtf8(quoi)
End Function

et que je l'utilise dans votre code, ça donne :

'---8<---
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8

Const TristateUseDefault = -2 'encodage par default.
Const TristateTrue = -1 'Unicode.
Const TristateFalse = 0 'ASCII.

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oTS = oFSO.OpenTextFile("test.htm", ForWriting, True,
TristateFalse)
oTS.Write("<html><head>")
oTS.Write("<meta http-equiv=""Content-Type"" content=""text/html;
charset=utf-8"">")
oTS.Write(UTF8("</head><body><p>éèàç¤</p></body></html>"))
oTS.Close

Function UTF8(quoi)
UTF8=CreateObject("OlePrn.OleCvt").ToUtf8(quoi)
End Function
'---8<---

Amicalement,

--
Jean - JMST
Belgium

Avatar
Fred
Dans : news:,
Jean disait :

Bonjour,

Et pas d'UTF-8 disponible


UTF8=CreateObject("OlePrn.OleCvt").ToUtf8(quoi)


Intéressant : je ne connaissais pas cet objet.
Pour mieux comprendre l'encodage utf-8, je m'étais fait une petite
fonction maison que j'ai traduite en vbs ci-dessous :

8<-------------
Function ToUTF8(s)
sUTF8 = ""
For i=1 To Len(s)
unicode = AscW(Mid(s, i, 1))
If unicode <= &H007F Then
sUTF8 = sUTF8 & Chr(unicode)
Else
If unicode <= &H07FF Then
sUTF8 = sUTF8 & Chr(&HC0 + unicode &H40)
sUTF8 = sUTF8 & Chr(&H80 + unicode Mod &H40)
Else
sUTF8 = sUTF8 & Chr(&HE0 + unicode &H1000)
sUTF8 = sUTF8 & Chr(&H80 + (unicode Mod &H1000) &H40)
sUTF8 = sUTF8 & Chr(&H80 + (unicode Mod &H1000) Mod
&H40)
End if
End If
Next
ToUTF8 = sUTF8
End Function
8<---------------

Ce n'est pas complet car l'UTF8 peut aller jusqu'à 4 octets pour un
caractère si son code Unicode est supérieur à 10000H, mais je ne sais
pas faire cela en vbs :-)

Un appel avec «éèçà€» renvoie bien (en windows-1252) : «Ã©Ã¨Ã§Ã â,¬»

Amicalement,


de même.


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
Jean
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Print_r/hh/Print_r/webfnc_e31e8dae-76bb-4250-9d16-090a987c0dbf.xml.asp


lire :

http://msdn.microsoft.com/library/en-us/Print_r/hh/Print_r/webfnc_0ca4054a-768a-44b9-bb7e-84a5cb81349b.xml.asp

Amicalement,


--
Jean - JMST
Belgium

Avatar
Méta-MCI
Bonsoir !

Je veux pas dire, mais lorsque je vois ça :

lire :
msdn.microsoft.com/library/en-us/Print_r/hh/Print_r/webfnc_0ca4054a-768a-44b9-bb7e-84a5cb81349b.xml.asp




Je me dis qu'il est quand même plus facile de lire : "Les chaussettes de
l'archi-duchesses sont sèches et archi-sèches"
Et, perso, j'aimerais bien entendre ce que donne ton conseil, lu à haute
voix, avec l'accent belge (ou parisien, ou québécois...)
;o)


@+

MCI



Avatar
Jean
Je me dis qu'il est quand même plus facile de lire : "Les chaussettes de
l'archi-duchesses sont sèches et archi-sèches"


LOL, je trouve aussi.

Et, perso, j'aimerais bien entendre ce que donne ton conseil, lu à haute
voix,


'---8<---
CreateObject("SAPI.SpVoice").Speak _
"http://msdn.microsoft.com/library/en-us/Print_r/"&_
"hh/Print_r/webfnc_0ca4054a-768a-44b9-bb7e-84a5c"&_
"b81349b.xml.asp"
'---8<---

:O)

avec l'accent belge (ou parisien, ou québécois...)


... suivre les indications suivantes :

http://users.skynet.be/jmst/win_multi_lingue.htm

ou plus simplement :

http://users.skynet.be/jmst/a56ab66546a66c445456d46e5565A4445d478Ea45.htm

:O)

... pour le Belge mettre une frite dans la bouche de Pierre :O)

Amicalement,




--
Jean - JMST
Belgium

Avatar
Méta-MCI
Bonjour !

Grand merci pour le lien !
Je cherchais justement ça depuis une dizaine de jours. J'en avais marre de
devoir passer par les Agents, pour faire causer français à mes micros.

Pour la frite (dans bouche de Pierre), je vais vite en semer quelques-unes ;
en espérant que la récolte soit bonne...

@+

MCI