编码和 JS - 如何从 UTF-8 文本中删除带有 javascript 的重音
Encoding and JS - how to remove accents with javascript from a UTF-8 text
>我在网页上有这个选项,双击一个单词,它会打开一个新窗口并执行搜索。我使用了一个简短的javascript函数(如RemoveAccents()或accentsTidy())来删除单词中的重音,并将单词作为字符串传递到新窗口的URL中。现在我更改了网站的编码并在声明中使用 UTF-8 编码,并使用 UTF-8 对文本进行编码,因为它主要是法语,使用 PHP 函数 iconv("ISO-8859-1"、"UTF-8", $string) (iconv("Windows-1252"...) 不能解决问题)。
但是使用 UTF-8 编码时,javascript 函数不会删除重音符号,并且当 url 中包含重音符号时,新窗口为空。
当我切换回页面的 ISO-8859-1 编码时,它工作正常。
我用alert(string)测试了函数,除了没有用等效字母替换的重音外,它们工作正常,新窗口的JS日志上唯一的错误消息是关于未声明编码,这很明显,因为当URL中有重音时页面是空白的...
我还在其他页面上的 url 中使用了重音进行测试,如果不是因为随后需要的解码/编码,我没有看到任何问题。
我在搜索 Unicodes 转义时发现了这个函数,在删除重音函数起作用之前应用它:
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;
}
相关文章:
- 删除javascript中的大Blob
- 删除javascript中包含特定单词的行
- 可以clearTimeout删除JavaScript中已触发超时事件的未处理回调
- 如何删除javascript中的不透明度
- 如何筛选要写入新文档的HTML,删除JavaScript中的某些类和/或ID
- 如何删除JavaScript画布呈现上下文的状态堆栈
- 将数组中的重复项转换为唯一项,而不删除Javascript中的任何项
- 从 DOM 中删除/删除 Javascript 用户定义的数组
- 如何删除 JavaScript 对象中具有相同键的所有元素
- 使用替换函数删除 Javascript 中元素的类
- 使用 MVC 删除 JavaScript 中硬编码字符串 Asp.Net 最佳方法
- 如何删除 javascript 中某些字符之前的所有逗号
- 删除 JavaScript 中的全角和半角字符
- 滑动以删除JavaScript
- 只删除javascript中的1个动态元素
- 如何删除Javascript对象属性
- 如何删除javascript数组中的空白元素
- 删除Javascript中小数后的数字
- 删除javascript中的decimal
- 从ASP.NET MVC部分视图中卸载/删除javascript函数