Javascript编码问题

标签 javascript html encoding

我们有一个外部 .js 文件,我们希望将其包含在许多不同的页面中。该文件包含用于在客户端对表格进行排序的代码,并使用脚本中的▲和▼字符来指示排序的列和方向。

该脚本最初是为 ASP.Net 页面编写的,用于将一些排序工作从服务器卸载到客户端(在启用 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。

最佳答案

JavaScript 文件的编码取决于嵌入它的 HTML 页面的编码。如果您有一个 UTF-8 JavaScript 文件和一个 ISO-8859-1 HTML 页面,JavaScript 将被解释为 ISO-8859-1。

如果您从外部文件加载 JavaScript,您可以指定 JavaScript 的编码:

<script type="text/javascript" charset="UTF-8" src="externalJS.js"></script>

无论如何,最好的选择是以一种编码保存与 web 项目相关的所有文件,推荐使用 UTF-8。

关于Javascript编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/586430/

相关文章:

javascript - 集中一个圆形边框

javascript - columnSelector 中的数据列范围(Mottie 的 Tablesorter)

javascript - 如何触发任何箭头键

javascript - ng-model 内部 radio 输入刷新

jquery - multipart/form-data 使用什么编码?是否可以使用 JQuery 对数据进行编码?

python - Messenger JSON 中的编码

javascript - jQuery/JavaScript 对象,添加到内部函数

javascript - 如何在 JavaScript 中删除数组中的特定元素

html - 未应用 CSS 样式 : Head First HTML Example

python - 奇怪的网站编码。是否有可能使用 python 获取它?