У нас есть внешний .js-файл, который мы хотим включить в несколько разных страниц. Файл содержит код для сортировки таблицы на стороне клиента и использует символы ▲ и ▼ в сценарии, чтобы указать, какой столбец отсортирован и в каком направлении.Javascript encoding question
Сценарий изначально был написан для страницы ASP.Net, чтобы разгрузить некоторую работу сортировки с сервера на клиент (запретить сортировку postbacks при включенном javascript). В этом случае кодировка почти всегда является UTF-8, и в этом контексте она отлично работает.
Однако у нас также есть несколько старых классических страниц ASP, где мы хотим включить скрипт. Для этих страниц кодирование является скорее мешаниной в зависимости от того, кто написал страницу, когда и какой инструмент они использовали (блокнот, vs6, vs2005, другой помощник html). Часто на странице не указывается кодировка, поэтому для браузера нужно выбирать, но для этого нет жесткого правила, которое я могу видеть.
Проблема в том, что если используется другая (не UTF8) кодировка, символы ▼ и ▲ будут отображаться неправильно. Вместо этого я попытался использовать html-сущности, но не смог заставить их хорошо работать с javascript.
Как настроить скрипт для различных возможных кодировок так, чтобы «специальные» символы всегда отображались правильно? Существуют ли разные символы, которые я мог бы использовать, или трюк, который я пропустил, чтобы заставить html-объекты работать с javascript?
Вот фрагмент кода, где используются символы:
// 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;
Для любознательных, кодовые точки я в конечном итоге, используя с принятым ответом были \ u25B4 и \ u25BC.
Спасибо, что сделал. Для любопытных, коды, о которых идет речь, где \ u25B4 и \ u25BC –