对于XSS safety,我想将所有字符转换为\ u +十六进制编码。我见过UTF-16 solutions,但我找不到UTF-8的任何内容。
我首先要确保所有字符都是UTF-8。在这里,我已经看到很多解决方案,但没有一致的javascript。
如何测试字符串的UTF-8并返回\ u +十六进制编码,如果是,否则返回false?
答案 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;
}
如果您不检查非法代码点,则不需要注释掉该行。