Pregunta de encoding Javascript

Tenemos un archivo .js externo que queremos incluir en varias páginas diferentes. El archivo contiene código para ordenar una tabla en el lado del cliente, y usa los caracteres ▲ y ▼ en el script para indicar qué columna está ordenada y en qué dirección.

La secuencia de comandos se escribió originalmente para una página ASP.Net para descargar algunos trabajos de clasificación del servidor al cliente (evitar la clasificación de las devoluciones de datos cuando Javascript está habilitado). En ese caso, la encoding es casi siempre UTF-8 y funciona muy bien en ese contexto.

Sin embargo, también tenemos varias páginas Classic ASP antiguas en las que queremos incluir el script. Para estas páginas la encoding es más bien un batiburrillo dependiendo de quién escribió la página cuándo y qué herramienta estaban usando (bloc de notas, vs6, vs2005, otro helper html). A menudo no se especifica la encoding en la página, por lo que depende del navegador elegir, pero realmente no veo una regla sólida que pueda ver.

El problema es que si se utiliza una encoding diferente (no UTF8), los caracteres ▼ y ▲ no se mostrarán correctamente. Intenté usar entidades html en su lugar, pero no pude hacer que funcionaran bien desde el javascript.

¿Cómo puedo hacer que el script se ajuste a las diversas codificaciones potenciales para que los caracteres “especiales” siempre aparezcan correctamente? ¿Hay diferentes personajes que podría estar usando, o un truco que me perdí para hacer que las entidades html funcionen desde javascript?

Aquí está el fragmento donde se usan los personajes:

// 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; 

Para los curiosos, los puntos de código que terminé usando con la respuesta aceptada fueron \ u25B4 y \ u25BC.

Desea que Javascript se escape en Unicode, es decir, “\ uxxxx”, donde “xxxx” es el punto de código Unicode para el personaje. Creo que “\ u25B2” y “\ u25BC” son los dos que necesita.

La encoding del archivo JavaScript depende de la encoding de la página HTML, donde está incrustada. Si tiene un archivo JavaScript UTF-8 y una página HTML ISO-8859-1, el JavaScript se interpreta como ISO-8859-1.

Si carga el JavaScript como un archivo externo, puede especificar la encoding del JavaScript:

  

De todos modos, la mejor opción es guardar todos los archivos relacionados con un proyecto web en una encoding, UTF-8 recomendado.

Yo voté por ambos. Creo que las dos respuestas juntas serían tu mejor opción.

Probablemente va a tener que escribir el guión dos veces, incluir una parte para UTF-8 y poner una parte para no UTF-8. Es más problemas, y podría no funcionar todo el tiempo, TODAVÍA.

Alguien necesita crear estándares para tus desarrolladores. Si todos escriben con al menos la misma encoding, les facilitará mucho más las cosas en el futuro.