一部絵文字のバイト変換がおかしくなる問題の修正

This commit is contained in:
Fairy-Phy 2023-09-17 01:34:45 +09:00 committed by mattyatea
parent 7ead6b04fa
commit 8752160645
1 changed files with 10 additions and 3 deletions

View File

@ -26,17 +26,24 @@ const convertBase = (value, from_base, to_base) => {
return new_value || '0';
};
const emojiSplit = String.fromCodePoint(0x200d);
const hexEncodeEmoji = (chr) => {
if (chr.length !== 1) {
if (chr.length === 3) return hexEncodeEmoji(chr.slice(0, 2)) + '-' + hexEncodeEmoji(chr.slice(2, chr.length));
else if (chr.length === 2) {
const hi = chr.charCodeAt(0);
const lo = chr.charCodeAt(1);
if (0xD800 <= hi && hi < 0xDC00 && 0xDC00 <= lo && lo < 0xE000) {
return (0x10000 + (hi - 0xD800) * 0x400 + (lo - 0xDC00)).toString(16);
}
return ("000" + hi.toString(16)).slice(-4) + '-' + ("000" + lo.toString(16)).slice(-4);
return hi.toString(16) + '-' + lo.toString(16);
}
else if (chr.length === 1) {
return chr.charCodeAt(0).toString(16);
}
else {
return ("000" + chr.charCodeAt(0).toString(16)).slice(-4);
const sp = chr.split(emojiSplit);
if (sp.length !== 2) return '';
return hexEncodeEmoji(sp[0]) + '-200d-' + hexEncodeEmoji(sp[1]);
}
};