UTF-8の求め方
1. 符号位置nの範囲を確認する
2. nを2進数で表す
3. 表のバイト列のxに当てはめる
4. 3.で求めたバイト列を16進数に変換する
code:js
function getUTF8ByteArray(word) {
const cp = word.codePointAt(0);
if (0x0000 <= cp && cp <= 0x007F) {
} else if (0x0080 <= cp && cp <= 0x07FF) {
return [
(((cp >> 6) & 0b00111111) | 0b11000000),
((cp & 0b00111111) | 0b10000000)
];
} else if (0x0800 <= cp && cp <= 0xFFFF) {
return [
(((cp >> 12) & 0b00001111) | 0b11100000),
(((cp >> 6) & 0b00111111) | 0b10000000),
((cp & 0b00111111) | 0b10000000)
];
} else if (0x10000 <= cp && cp <= 0x10FFFF) {
return [
(((cp >> 18) & 0b00000111) | 0b11110000),
(((cp >> 12) & 0b00111111) | 0b10000000),
(((cp >> 6) & 0b00111111) | 0b10000000),
((cp & 0b00111111) | 0b10000000)
];
} else {
return [];
}
}
code:ㅤ
console.log(getUTF8ByteArray('A').map(m => %${m.toString(16).toUpperCase()}).join(''))
%41
console.log(getUTF8ByteArray('^').map(m => %${m.toString(16).toUpperCase()}).join(''))
%5E
console.log(getUTF8ByteArray('').map(m => %${m.toString(16).toUpperCase()}).join(''))
%7F
console.log(getUTF8ByteArray('�').map(m => %${m.toString(16).toUpperCase()}).join(''))
%C2%80
console.log(getUTF8ByteArray('Ω').map(m => %${m.toString(16).toUpperCase()}).join(''))
%CE%A9
console.log(getUTF8ByteArray('Ӑ').map(m => %${m.toString(16).toUpperCase()}).join(''))
%D3%90
console.log(getUTF8ByteArray('߿').map(m => %${m.toString(16).toUpperCase()}).join(''))
%DF%BF
console.log(getUTF8ByteArray('ࠀ').map(m => %${m.toString(16).toUpperCase()}).join(''))
%E0%A0%80
console.log(getUTF8ByteArray('墸').map(m => %${m.toString(16).toUpperCase()}).join(''))
%E5%A2%B8
console.log(getUTF8ByteArray('彁').map(m => %${m.toString(16).toUpperCase()}).join(''))
%E5%BD%81
console.log(getUTF8ByteArray('愛').map(m => %${m.toString(16).toUpperCase()}).join(''))
%E6%84%9B
console.log(getUTF8ByteArray('挧').map(m => %${m.toString(16).toUpperCase()}).join(''))
%E6%8C%A7
console.log(getUTF8ByteArray('︰').map(m => %${m.toString(16).toUpperCase()}).join(''))
%EF%B8%B0
console.log(getUTF8ByteArray('').map(m => %${m.toString(16).toUpperCase()}).join(''))
%EF%BF%BF
console.log(getUTF8ByteArray('𐀀').map(m => %${m.toString(16).toUpperCase()}).join(''))
%F0%90%80%80
console.log(getUTF8ByteArray('🀄').map(m => %${m.toString(16).toUpperCase()}).join(''))
%F0%9F%80%84
console.log(getUTF8ByteArray('🀢').map(m => %${m.toString(16).toUpperCase()}).join(''))
%F0%9F%80%A2
console.log(getUTF8ByteArray('🃤').map(m => %${m.toString(16).toUpperCase()}).join(''))
%F0%9F%83%A4
console.log(getUTF8ByteArray('𠉥').map(m => %${m.toString(16).toUpperCase()}).join(''))
%F0%A0%89%A5
console.log(getUTF8ByteArray('𩸽').map(m => %${m.toString(16).toUpperCase()}).join(''))
%F0%A9%B8%BD
関連