text / encoding
文字コード変換
文字を入力すると Unicode コードポイント・UTF-8バイト列・UTF-16LE・HTML実体参照をリアルタイムで表示します。U+XXXX 形式・10進数・16進数からの逆引きにも対応しています。
0 / 20 文字
コードポイントから文字に変換
→
コードポイントを入力してください
使い方
01- 上部のテキストエリアに解析したい文字を入力してください(最大20文字)
- 入力するたびに各文字のUnicode・UTF-8・UTF-16LE・HTML実体参照が即座に表示されます
- 絵文字(😀)や日本語(あいう)など、あらゆるUnicode文字に対応しています
- 下部の「コードポイントから変換」では
U+3042、12354、0x3042の3形式を入力できます
実装コード
02ブラウザ標準の TextEncoder・String.fromCodePoint()・codePointAt() のみで実装しています。外部ライブラリ不要でそのままコピーして利用できます。
export interface CharInfo {
char: string
codePoint: number // Unicodeコードポイント(10進)
codePointHex: string // U+XXXX 形式
utf8Bytes: string // 例: "E3 81 82"
utf16le: string // 例: "42 30"
htmlEntity: string // 例: "あ" or "&"
htmlEntityHex: string // 例: "あ"
category: string
}
// 文字列の各文字を解析(サロゲートペア対応)
export function analyzeString(input: string): CharInfo[] {
const chars = [...input].slice(0, 20) // spread でコードポイント単位に分解
return chars.map(char => {
const cp = char.codePointAt(0) ?? 0
const utf8 = new TextEncoder().encode(char)
return {
char,
codePoint: cp,
codePointHex: 'U+' + cp.toString(16).toUpperCase().padStart(4, '0'),
utf8Bytes: Array.from(utf8)
.map(b => b.toString(16).toUpperCase().padStart(2, '0'))
.join(' '),
// ... UTF-16LE, HTML entity など
}
})
}
// U+XXXX / 10進 / 0x16進 → コードポイント解析
export function parseCodePoint(input: string): number | null {
const s = input.trim()
const uPlus = s.match(/^[Uu]\+([0-9A-Fa-f]{1,6})$/)
if (uPlus) return parseInt(uPlus[1], 16)
const hex0x = s.match(/^0[Xx]([0-9A-Fa-f]+)$/)
if (hex0x) return parseInt(hex0x[1], 16)
if (/^\d+$/.test(s)) return parseInt(s, 10)
return null
}よくある使用例・注意点
03UTF-8 エンコードとバイト数の把握
ASCII文字(U+0000〜U+007F)はUTF-8で1バイト、日本語のひらがな・漢字(U+0800〜U+FFFF)は3バイトになります。データベースのフィールド長やHTTPヘッダーのbyte計算をする際にこのツールで確認できます。
サロゲートペアと絵文字
JavaScriptの文字列はUTF-16エンコードを使用します。U+10000以上の文字(多くの絵文字・一部の漢字)は2つのコードユニット(サロゲートペア)で表現されます。このためstr.lengthは文字数と異なる場合があります。このツールは[...str]スプレッド構文でコードポイント単位に正しく分解しています。
HTML実体参照の使い分け
& < > " ' の5文字はXSS対策として必ずエスケープが必要です。 は改行禁止スペース(U+00A0)で通常の半角スペースとは別物です。© ® ™ などの記号は名前付き参照か数値参照(© / ©)を使えます。
UTF-16LE とバイトオーダー
Windowsのテキストファイルや一部のAPIはUTF-16LE(リトルエンディアン)を使用します。例えば 'A'(U+0041)はUTF-16LEでは 0x41 0x00 の2バイトになります。JavaScriptのcharCodeAt()は常にUTF-16コードユニットを返します。
U+FFFD 文字化け・置換文字
U+FFFD(□に?)はUnicodeの置換文字で、デコード不可能なバイトシーケンスを受け取った際に表示されます。文字化けの調査では、どのバイト列がU+FFFDに置換されているかを追うとエンコーディングの不一致を特定できます。
関連ツール
04ソースコード
05このツールのソースコード(テストコードを含む)はGitHubで公開しています。 MITライセンスで自由に利用・改変できます。
GitHub でコードを見る →