检查字符串是否为UTF-8,如果是,则返回\ u + hex,否则返回false

时间:2014-03-08 20:49:10

标签: javascript utf-8 character-encoding hex typechecking

对于XSS safety,我想将所有字符转换为\ u +十六进制编码。我见过UTF-16 solutions,但我找不到UTF-8的任何内容。

我首先要确保所有字符都是UTF-8。在这里,我已经看到很多解决方案,但没有一致的javascript。

如何测试字符串的UTF-8并返回\ u +十六进制编码,如果是,否则返回false?

1 个答案:

答案 0 :(得分:2)

function string_to_hex(input) {
    var temp = 0, output = "";
    for (var i = 0; i < input.length; i++) {
        temp = input.charCodeAt(i);
        if (temp > 0xFF) {
//      if (temp == 192 || temp == 193 || temp > 244) {
            return false;
        }
        output += "\\x" + temp.toString(16).slice(1); //lazy padding
    }
    return output;
}

如果您不检查非法代码点,则不需要注释掉该行。