我在网页上有这个选项,双击一个单词,它会打开一个新窗口并执行搜索。我使用了一个简短的javascript函数(如RemoveAccents()或accentsTidy())来删除单词中的重音,并将该单词作为字符串传递到新窗口的url中。现在我更改了网站的编码并在声明中使用UTF-8编码,并使用PHP函数iconv(“ISO-8859-1”,“UTF-”对UTF-8进行编码,因为它主要使用法语编写。 8“,$ string)(iconv(”Windows-1252“...)无法解决问题。)
但是使用UTF-8编码时,javascript函数不会删除重音符号,并且当url中包含重音时,新窗口为空。
当我切换回页面的ISO-8859-1编码时,它工作正常。
我使用alert(字符串)测试了这些函数,除了没有用等效字母替换的重音符号之外它们工作正常,新窗口的JS日志上唯一的错误消息是关于未声明的编码,很明显,当网址中有重音时页面为空白...
我还在其他页面上的url中测试了重音符号,如果不是因为后面所需的解码/编码,我也没有看到任何问题。
答案 0 :(得分:0)
我在搜索Unicodes转义时找到了这个函数,在remove-accent函数执行操作之前应用它:
String.prototype.removeDiacritics = function() {
var diacritics = [
[/[\300-\306]/g, 'A'],
[/[\340-\346]/g, 'a'],
[/[\310-\313]/g, 'E'],
[/[\350-\353]/g, 'e'],
[/[\314-\317]/g, 'I'],
[/[\354-\357]/g, 'i'],
[/[\322-\330]/g, 'O'],
[/[\362-\370]/g, 'o'],
[/[\331-\334]/g, 'U'],
[/[\371-\374]/g, 'u'],
[/[\321]/g, 'N'],
[/[\361]/g, 'n'],
[/[\307]/g, 'C'],
[/[\347]/g, 'c'],
];
var s = this;
for (var i = 0; i < diacritics.length; i++) {
s = s.replace(diacritics[i][0], diacritics[i][1]);
}
return s;
}