OVH Cloud OVH Cloud

JavaScript externe et charset

16 réponses
Avatar
Pierre Goiffon
[Suivi positionné sur f.c.l.javascript]

Pour des questions d'application multilangue, j'ai besoin de sortir des
chaines dans des variables déclarées dans un JavaScript externe. Ce
JavaScript externe est généré côté serveur et contient des choses comme :

var KCopier = "Copier";
var KColler = "Coller";

etc.

Le JavaScript externe est renvoyé avec cet entête :

Content-Type: application/x-javascript; charset: windows-1252

Ma page est servit en UTF-8 et il ne faut pas que cela change. Le script
externe quant à lui, je suis bien obligé de le renvoyer en Windows-1252
car je ne peut pas faire de transcodage côté serveur (contraintes dues
au produit utilisé)

Il se trouve que le charset tel que placé dans mon entête ne produit
aucun effet ! J'ai en effet des caractères incohérents sur les accents
si je laisse tel quel... Par contre si je spécifie dans l'appel au
JavaScript externe l'attribut charset="windows-1252" alors tout devient
OK. C'est comme si le sous type charset dans l'entête n'était absolument
pas pris en compte ! Or je préférerai bien entendu me passer de
l'attribut charset et tout déclarer dans l'entête HTTP...

Est-ce que quelqu'un aurait une idée ?

10 réponses

1 2
Avatar
ASM

Il se trouve que le charset tel que placé dans mon entête ne produit
aucun effet ! J'ai en effet des caractères incohérents sur les accents
si je laisse tel quel...


Comme d'hab, je comprends pas tout ...

Comment veux-tu que ton en-tête utf-8 traduise ton JS windows ?

Par contre si je spécifie dans l'appel au
JavaScript externe l'attribut charset="windows-1252"


Ha! alors ce truc fonctionne ?

C'est comme si le sous type charset dans l'entête n'était absolument
pas pris en compte !


Qu'est-ce que c'est que ce sous-type ?
On peut faire ça ? envoyer 36 charsets ? et le html s'en débrouille ?

Est-ce que quelqu'un aurait une idée ?


Hu ?

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

Avatar
Olivier Miakinen

Content-Type: application/x-javascript; charset: windows-1252


Tu vas avoir honte de toi, j'en ai bien peur...

Il se trouve que le charset tel que placé dans mon entête ne produit
aucun effet !


Tu pourrais essayer avec un signe « = » au lieu des « : »...
;-)

Avatar
Pierre Goiffon
Olivier Miakinen wrote:
Content-Type: application/x-javascript; charset: windows-1252


Tu pourrais essayer avec un signe « = » au lieu des « : »...
;-)


:D
Bon ben voilà, prb solutionné ! C'est fou ce que l'on ne voit plus rien
à être trop la tête dans le code !
Milles merci Olivier !


Avatar
Pierre Goiffon
ASM wrote:
Il se trouve que le charset tel que placé dans mon entête ne produit
aucun effet ! J'ai en effet des caractères incohérents sur les accents
si je laisse tel quel...


Comme d'hab, je comprends pas tout ...

Comment veux-tu que ton en-tête utf-8 traduise ton JS windows ?

Par contre si je spécifie dans l'appel au JavaScript externe
l'attribut charset="windows-1252"


Ha! alors ce truc fonctionne ?


Oui, j'ai bien une page servit en UTF-8, et le JavaScript externe avec
les initialisation de constantes servit en Windows-1252, et ça
fonctionne ! Comme bcp de langages je suppose que JS effectue les
transformations qu'il faut... je n'ai trouvé cependant aucune info en
cherchant dans des doc de droite de gauche...

Bon, ça marche sur Firefox 2 Windows une fois la modification suggérée
par Olivier effectuée... mais j'obtiens toujours des soucis avec IE 6 XP
SP2, sans l'attribut charset j'obtiens des caractères mal traduits... En
remettant l'attribut on revient à la normale... Mais il sembel que le
cache me joue des tours... euh je vais m'y plonger et je reviens vous
donner l'info !

C'est comme si le sous type charset dans l'entête n'était absolument pas pris en compte !


Qu'est-ce que c'est que ce sous-type ?


Le sous type content-type, c'est le terme pour désigner ce "charset="
apparaissant dans l'entête


Avatar
Pierre Goiffon
Pierre Goiffon wrote:
Ha! alors ce truc fonctionne ?


Oui, j'ai bien une page servit en UTF-8, et le JavaScript externe avec
les initialisation de constantes servit en Windows-1252, et ça
fonctionne !
(...)

Bon, ça marche sur Firefox 2 Windows une fois la modification suggérée
par Olivier effectuée... mais j'obtiens toujours des soucis avec IE 6 XP
SP2, sans l'attribut charset j'obtiens des caractères mal traduits... En
remettant l'attribut on revient à la normale... Mais il sembel que le
cache me joue des tours... euh je vais m'y plonger et je reviens vous
donner l'info !


Voilà, je reviens après quelques manip' :)
Effectué des tests avec les 3 seuls navigateurs sur ma seule machine
(donc sur Windows XP SP2, Firefox 2, IE6 et Opera 9.10) : résultat
Firefox et Opera tirent très bien leur épingle du jeux ! IE6 est par
contre perdu sans l'attribut charset dans l'appel au script externe...
Je vais donc devoir le laisser...


Avatar
ASM

Voilà, je reviens après quelques manip' :)
Effectué des tests avec les 3 seuls navigateurs sur ma seule machine
(donc sur Windows XP SP2, Firefox 2, IE6 et Opera 9.10) : résultat
Firefox et Opera tirent très bien leur épingle du jeux ! IE6 est par
contre perdu sans l'attribut charset dans l'appel au script externe...
Je vais donc devoir le laisser...


Je ne sais si les Macs pourraient être concernés par ta production ...
il faut savoir que Safari (tt au moins le mien) fait, ou pourrait bien
faire, comme ton IE6
(il semble bien aimer qu'on lui mette et remette les points sur les i)


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

Avatar
Pierre Goiffon
ASM wrote:
Effectué des tests avec les 3 seuls navigateurs sur ma seule machine
(donc sur Windows XP SP2, Firefox 2, IE6 et Opera 9.10) : résultat
Firefox et Opera tirent très bien leur épingle du jeux ! IE6 est par
contre perdu sans l'attribut charset dans l'appel au script externe...
Je vais donc devoir le laisser...


Je ne sais si les Macs pourraient être concernés par ta production ...
il faut savoir que Safari (tt au moins le mien) fait, ou pourrait bien
faire, comme ton IE6
(il semble bien aimer qu'on lui mette et remette les points sur les i)


Oui... je le laisse, la manip est de toute façon quand même assez
acrobatique (mais j'y suis vraiment forcé, malheureusement)


Avatar
O.L.
Il se trouve que Pierre Goiffon a formulé :
[Suivi positionné sur f.c.l.javascript]

Pour des questions d'application multilangue, j'ai besoin de sortir des
chaines dans des variables déclarées dans un JavaScript externe. Ce
JavaScript externe est généré côté serveur et contient des choses comme :

var KCopier = "Copier";
var KColler = "Coller";

etc.

Le JavaScript externe est renvoyé avec cet entête :

Content-Type: application/x-javascript; charset: windows-1252

Ma page est servit en UTF-8 et il ne faut pas que cela change. Le script
externe quant à lui, je suis bien obligé de le renvoyer en Windows-1252 car
je ne peut pas faire de transcodage côté serveur (contraintes dues au produit
utilisé)

Il se trouve que le charset tel que placé dans mon entête ne produit aucun
effet ! J'ai en effet des caractères incohérents sur les accents si je laisse
tel quel... Par contre si je spécifie dans l'appel au JavaScript externe
l'attribut charset="windows-1252" alors tout devient OK. C'est comme si le
sous type charset dans l'entête n'était absolument pas pris en compte ! Or je
préférerai bien entendu me passer de l'attribut charset et tout déclarer dans
l'entête HTTP...

Est-ce que quelqu'un aurait une idée ?


<mode bricolage=on pasSurDuToutQueCaMarche=yes> :)

Dans le JS externe, tu encode tes données en Base64 pour qu'ielles
puissent franchir la barrière de la transmission web :

var KCopier = "Copier";
var KColler = "Coller";

devient :

var js_code =
"dmFyIEtDb3BpZXIgPSAiQ29waWVyIjsNCnZhciBLQ29sbGVyID0gIkNvbGxlciI7DQo=";

et ensuite dans ta page web tu désencode et tu exécute le code (après
avoir récupéré une fonction base64_decode sur le net) :
<script src=jsexterne.js></script>
<script>
eval(base64_decode(js_code));
</script>

Avatar
O.L.
O.L. a émis l'idée suivante :
Il se trouve que Pierre Goiffon a formulé :
[Suivi positionné sur f.c.l.javascript]

Pour des questions d'application multilangue, j'ai besoin de sortir des
chaines dans des variables déclarées dans un JavaScript externe. Ce
JavaScript externe est généré côté serveur et contient des choses comme :

var KCopier = "Copier";
var KColler = "Coller";

etc.

Le JavaScript externe est renvoyé avec cet entête :

Content-Type: application/x-javascript; charset: windows-1252

Ma page est servit en UTF-8 et il ne faut pas que cela change. Le script
externe quant à lui, je suis bien obligé de le renvoyer en Windows-1252 car
je ne peut pas faire de transcodage côté serveur (contraintes dues au
produit utilisé)

Il se trouve que le charset tel que placé dans mon entête ne produit aucun
effet ! J'ai en effet des caractères incohérents sur les accents si je
laisse tel quel... Par contre si je spécifie dans l'appel au JavaScript
externe l'attribut charset="windows-1252" alors tout devient OK. C'est
comme si le sous type charset dans l'entête n'était absolument pas pris en
compte ! Or je préférerai bien entendu me passer de l'attribut charset et
tout déclarer dans l'entête HTTP...

Est-ce que quelqu'un aurait une idée ?


<mode bricolage=on pasSurDuToutQueCaMarche=yes> :)

Dans le JS externe, tu encode tes données en Base64 pour qu'ielles puissent
franchir la barrière de la transmission web :

var KCopier = "Copier";
var KColler = "Coller";

devient :

var js_code =
"dmFyIEtDb3BpZXIgPSAiQ29waWVyIjsNCnZhciBLQ29sbGVyID0gIkNvbGxlciI7DQo=";

et ensuite dans ta page web tu désencode et tu exécute le code (après avoir
récupéré une fonction base64_decode sur le net) :
<script src=jsexterne.js></script>
<script>
eval(base64_decode(js_code));
</script>


Oups, dsl, j'ai posté avant de voir sur fclj que le pb était solutionné
^^


Avatar
Olivier Miakinen

Il se trouve que Pierre Goiffon a formulé :
[Suivi positionné sur f.c.l.javascript]




[ je coupe quelques dizaines de lignes du problème qui a finalement
trouvé sa réponse ]


Est-ce que quelqu'un aurait une idée ?


<mode bricolage=on pasSurDuToutQueCaMarche=yes> :)



[ je coupe quelques autres dizaines de lignes d'une proposition de
solution qui s'est avérée inutile puisque la réponse avait déjà été donnée ]

</script>


Oups, dsl, j'ai posté avant de voir sur fclj que le pb était solutionné
^^


Mais bon sang, quel besoin alors de recopier plusieurs dizaines de
lignes parfaitement inutiles pour en rajouter une seule ???

P.-S. : à moins que tu ne sois le propriétaire du nom de domaine
undefined.net, "Null Interactive", ou l'un de ses hébergés, il
serait sympa de changer ton adresse en .



1 2