gpt4 book ai didi

javascript - 是否可以将包含 "high"unicode 字符的字符串转换为由从 utf-32 ("real") 代码派生的 dec 值组成的数组?

转载 作者:搜寻专家 更新时间:2023-10-31 08:08:00 24 4
gpt4 key购买 nike

请看这个在(理论上可能的)字符串上运行的脚本:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="jquery.js"></script>
<script>
$(function () {
$("#click").click(function () {
var txt = $('#high-unicode').text();
var codes = '';
for (var i = 0; i < txt.length; i++) {
if (i > 0) codes += ',';
codes += txt.charCodeAt(i);
}
alert(codes);
});
});
</script>
</head>
<body>
<span id="click">click</span><br />
<span id="high-unicode">&#x1D465;<!-- mathematical italic small x -->&#xF31E0;<!-- some char from Supplementary Private Use Area-A -->A<!-- char A -->&#x108171;<!-- some char from Supplementary Private Use Area-B --></span>
</body>
</html>

是否可以得到“119909,995808,65,1081713”而不是“55349,56421,56204,56800,65,56288,56689”?我读过 more-utf-32-aware-javascript-string问:从UTF-16 转换为字符代码的算法是什么? + 问:没有更简单的方法吗?来自unicode.org/faq/utf_bom ,但我不确定如何使用此信息。

最佳答案

看起来你必须解码surrogate pairs手动。例如:

function decodeUnicode(str) {
var r = [], i = 0;
while(i < str.length) {
var chr = str.charCodeAt(i++);
if(chr >= 0xD800 && chr <= 0xDBFF) {
// surrogate pair
var low = str.charCodeAt(i++);
r.push(0x10000 + ((chr - 0xD800) << 10) | (low - 0xDC00));
} else {
// ordinary character
r.push(chr);
}
}
return r;
}

完整代码:http://jsfiddle.net/twQWU/

关于javascript - 是否可以将包含 "high"unicode 字符的字符串转换为由从 utf-32 ("real") 代码派生的 dec 值组成的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14679920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com