Nous avons un fichier .js externe que nous voulons inclure dans un certain nombre de pages différentes. Le fichier contient du code pour trier une table du côté client et utilise les caractères ▲ et ▼ du script pour indiquer quelle colonne est triée et dans quelle direction.Question d'encodage Javascript
Le script a été écrit à l'origine pour une page ASP.Net afin de décharger un travail de tri du serveur vers le client (empêcher le tri des postbacks lorsque javascript est activé). Dans ce cas, l'encodage est à peu près toujours UTF-8 et ça marche très bien dans ce contexte.
Cependant, nous avons également un certain nombre de pages ASP Classic plus anciennes dans lesquelles nous voulons inclure le script. Pour ces pages l'encodage est plus d'un méli-mélo en fonction de qui a écrit la page quand et quel outil ils utilisaient (notepad, vs6, vs2005, autre helper html). Souvent, aucun encodage n'est spécifié dans la page, donc c'est au navigateur de choisir, mais il n'y a vraiment aucune règle stricte pour cela que je puisse voir.
Le problème est que si un codage différent (non-UTF8) est utilisé, les caractères ▼ et ▲ ne s'afficheront pas correctement. J'ai essayé d'utiliser des entités html à la place, mais je n'ai pas réussi à les faire fonctionner correctement avec le javascript.
Comment puis-je faire en sorte que le script s'ajuste aux divers encodages potentiels afin que les caractères "spéciaux" apparaissent toujours correctement? Y a-t-il différents caractères que je pourrais utiliser, ou un truc que j'ai manqué pour que les entités html fonctionnent à partir de javascript?
Voici l'extrait où les caractères sont utilisés:
// get sort direction, arrow
var dir = 1;
if (self.innerHTML.indexOf(" ▲") > -1)
dir = -1;
var arrow = (dir == 1)?" ▲":" ▼";
// SORT -- function that actually sorts- not relevant to the question
if (!SimpleTableSort(t.id, self.cellIndex, dir, sortType)) return;
//remove all arrows
for (var c = 0,cl=t.rows[0].cells.length;c<cl;c+=1)
{
var cell = t.rows[0].cells[c];
cell.innerHTML = cell.innerHTML.replace(" ▲", "").replace(" ▼", "");
}
// set new arrow
self.innerHTML += arrow;
Pour les curieux, les points de code que je fini par utiliser la réponse acceptée étaient \ u25B4 et \ u25BC.
Merci, c'est ce que j'ai fait. Pour les curieux, les codes en question où \ u25B4 et \ u25BC –