【问题标题】:Encoding and JS - how to remove accents with javascript from a UTF-8 text编码和 JS - 如何使用 javascript 从 UTF-8 文本中删除重音符号
【发布时间】:2015-08-28 05:12:32
【问题描述】:

我在网页上有这个选项,双击一个单词,它会打开一个新窗口并执行搜索。我使用了一个简短的 javascript 函数(如 RemoveAccents() 或 AccentsTidy())从单词中删除重音符号,并将单词作为字符串传递到新窗口的 url 中。现在我更改了站点的编码并在声明中使用 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 中使用重音符号进行了测试,如果不是接下来需要的解码/编码,我没有发现任何问题。

【问题讨论】:

    标签: javascript encoding utf-8 character-encoding


    【解决方案1】:

    我在搜索 Unicode 转义时发现了这个函数,在 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;
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-16
      • 2020-06-01
      • 2017-05-10
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多