ck_*_*ck_ 5 javascript unicode hex utf-8 utf-16
在 javascript 中,我试图将 unicode 制作为与 C 兼容的基于字节的十六进制转义序列:
IE。
变为:( \xF0\x9F\x98\x84 正确)
不是 javascript 代理,不是\uD83D\uDE04(错误)
我无法弄清楚 C 想要的四个字节与 javascript 使用的两个代理之间的数学关系。我怀疑这个算法比我微弱的尝试要复杂得多。
感谢您的任何提示。
encodeURIComponent执行此工作:
var input = "\uD83D\uDE04";
var result = encodeURIComponent(input).replace(/%/g, "\\x"); // \xF0\x9F\x98\x84
Run Code Online (Sandbox Code Playgroud)
更新:实际上,C 字符串可以包含数字和字母而无需转义,但如果你确实需要转义它们:
function escape(s, escapeEverything) {
if (escapeEverything) {
s = s.replace(/[\x10-\x7f]/g, function (s) {
return "-x" + s.charCodeAt(0).toString(16).toUpperCase();
});
}
s = encodeURIComponent(s).replace(/%/g, "\\x");
if (escapeEverything) {
s = s.replace(/\-/g, "\\");
}
return s;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1519 次 |
| 最近记录: |