UTF-8バイトエンコーダー
どんなテキストでもUTF-8の正確なバイトが分かります。「Hi」は16進ペアの48 69になり、バイトごとにペアがひとつ並びます。貼り付けた16進は元の文字に戻ります。UTF-8として不正な並びはごまかさず拒否します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hi
- 計算モード
- Encode
- 結果
- 48 69
- 入力
- Hi
- 16進
- 48 69
- 16進(コンパクト)
- 4869
UTF-8バイトエンコーダーは、読める文字をUnicodeがUTF-8で割り当てる正確なバイト列に変換し、2桁の16進ペアとして表示します。対応するデコーダーはそれらのバイトから元の文字列を再構成します。プレーンテキストを入力してエンコードを選ぶと、1オクテットごとのスペース区切りの16進ペアが得られます。16進を貼り付けてデコードを選べばテキストを復元できます。学生はマルチバイト文字や絵文字を確認し、開発者はユニットテストで通信フィクスチャを検証し、サポートチームは1つのアクセント付き文字がなぜ2つ以上の16進ペアになるかを説明します。
テキストがUTF-8の16進バイトになる仕組みと妥当性が重要な理由
コンピューターはテキストをバイト列として保存します。UTF-8はすべてのUnicodeコードポイントを1〜4バイトでエンコードします。基本的なラテン文字はクラシックなASCIIと一致する1バイトで済むことが多い一方、アクセント付きラテン文字、多くの非ラテン文字、絵文字は2、3、4バイトを必要とします。
エンコードでは標準のUTF-8エンコーダーで文字列を走査し、各バイトを0から255までの小文字2桁の16進数として書き出し、人が一目でオクテット数を数えられるよう単一のスペースでペアを結合します。16進ダンプやテストフィクスチャにコピー&ペーストするためのスペースなしのコンパクト形式も公開されています。
デコードはその逆です。 入力を候補ペアに分割し、各ペアが正確に2桁の16進数であることを要求し、各ペアをバイトに変換してから、そのバイト配列を致命的検証付きのUTF-8として解釈します。ペアが1桁、3桁、または非16進文字の場合、あるいは連続する16進文字列の長さが奇数の場合、コンバーターは失敗しなければなりません。
さらに重要なことに、整形式の16進でさえ、有効なUTF-8ではないバイトを記述する場合があります。たとえば孤立した継続バイトや切り詰められたマルチバイト先頭バイトです。
実践的なヒント、制限、関連ツール
読めるテキストから始め、課題、プロトコル図、16進ダンプ比較、ユニットテストフィクスチャのために16進バイトが必要な場合はencodeを選んでください。パケットキャプチャ、ログ行、教科書の16進を既に持っていて文字を取り戻したい場合はdecodeを選んでください。往復チェックは最速のスモークテストです。
Hiのような短い単語をエンコードし、2つのペアが16進で既知のASCIIバイト48と69に一致することを確認し、それらのペアをデコードして元の文字列を復元できることを確認します。また、Latin-1やWindows-1252を推測する文字化け修復ツールでもありません。
検索意図がテキスト対UTF-8 16進オクテットの場合はこの機能を選び、0と1の8ビットグループが必要な場合はテキストからバイナリへのコンバーターを、問題が16進表現ではなく誤ったソースエンコーディングの場合はUTF-8変換修復ツールを使ってください。
教える際は、同じ絵文字やアクセント付き文字をプレーンなASCII文字の隣に示し、マルチバイトUTF-8オクテットが謎の単一コードではなく追加の16進ペアとして現れることを学生に見せてください。
活用例
UTF-8マルチバイトエンコーディングの宿題チェック
学生はアクセントや絵文字を含む短いフレーズをエンコードし、手書きの16進ペアを決定論的な結果と比較し、スプレッドシートなしで教師提供の16進をデコードします。
コーデックとパーサーのユニットテストフィクスチャ
フィクスチャテキストから既知の16進バイト文字列を生成し、場当たり的なTextEncoderヘルパーなしでCIでデコードが同じUTF-8バイトを復元することを検証します。
プロトコルとネットワークの教育デモ
ワークショップでは印刷可能なラベルが回線上でオクテットになる様子を示し、無効なUTF-8 16進を強制して厳格なフレーミングとデコーダーの規則を説明します。
よくある質問
UTF-8バイトエンコーダーは何を出力しますか?
encodeモードでは、スペース区切りの2桁16進ペア(UTF-8バイトごとに1つ)、コンパクトな16進文字列、ペアと整数バイト値の配列を返します。decodeモードでは復元されたUTF-8テキストを返します。
絵文字や非ラテン文字に対応していますか?
はい。 エンコードにはUTF-8を使用するため、マルチバイト文字は複数の16進ペアになります。デコードは有効なUTF-8でないバイト列を拒否します。
スペースなしの16進を貼り付けられますか?
はい。 連続する文字列が16進数字のみで、長さが2の倍数であれば可能です。
UTF-8バイトエンコーダーは無料ですか?
ブラウザツールは無料でローカルで動作します。失敗タスクは課金されません。
16進が正しいUTF-8になっていないとどうなりますか?
置き換え文字を勝手に入れず、変換を止めます。単独の継続バイト、途中で切れた複数バイト文字、桁数が奇数の16進、16進以外の文字はいずれも拒否されるので、誤りがそのまま見えます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/utf8-bytes \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hi"}'const res = await fetch("https://api.kit.forhosting.com/enc/utf8-bytes", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hi"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/utf8-bytes",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hi"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/utf8-bytes", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hi"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hi"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/utf8-bytes", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Hi"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.utf8_bytes",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_chars | 100000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
無効な16進、奇数桁、または合法でないUTF-8のバイト列は、置換文字を捏造する代わりに明確なinvalid_inputエラーを返します。この処理はUTF-8バイト上の純粋な決定論的算術であり、ネットワークも乱数シードも時計依存もないため、無料のブラウザ実行環境とプリペイドAPIは呼び出すたびに同じJSONを返します。
テキストがUTF-8の16進バイトになる仕組みと妥当性が重要な理由
暗黙のパディングはペイロードを変え、課題のミスを隠してしまいます。Unicodeの置換文字を出力すればその欠陥が隠れてしまうため、このツールはinvalid_inputで拒否し、厳格なパーサーが発生させるのと同じ確定的なエラーを呼び出し側に見せます。このページはUTF-8バイトエンコーダー、テキストから16進バイトへのツール、オンラインUTF-8 16進デコーダーを探す人を対象としており、バイナリビットグループのコンバーターでも、レガシーコードページ向けの汎用エンコーディング検出器でもありません。
APIの呼び出し方とレスポンスの内容
デフォルトモードはencodeで、textのUTF-8バイトがスペース区切りの2桁16進ペアになります。decodeモードはtextを16進ペア(空白区切りのオクテット、オプションの0xプレフィックス、または長さが2の倍数の連続16進文字列)として扱い、復元されたUTF-8文字列を返します。必須の文字列フィールドtext(エイリアスinput、value、data)と、オプションのmode(encodeまたはdecode)を含むJSONボディを送信します。入力長は10万文字に制限されており、1回のリクエストで巨大な文字列によりWorkerのメモリが枯渇することはありません。encode成功時、レスポンスにはmode、input、result、同じスペース区切り16進文字列のhex、スペースなしのhex_compact、2文字文字列の配列pairs、整数バイト値のbytes、byte_count、短い英語メッセージが含まれます。decode成功時、レスポンスにはmode、input、result、デコードされたUTF-8文字列のtext、スペース区切りペアに正規化されたhex、hex_compact、同じpairsとbytes配列、byte_count、対応するメッセージが含まれます。検証失敗(textの欠落、文字列でないtext、過大な入力、不明なmode、無効な16進ペア、奇数長の連続16進、有効なUTF-8でないデコード済みバイト)はinvalid_inputを返し、課金されることはありません。料金は成功リクエストごとに一律$0.002で、単位はitem、限界単価はゼロです。
実践的なヒント、制限、関連ツール
継続バイトのない単一の先頭バイトのような不完全なマルチバイトシーケンスや、奇数長の連続16進文字列を意図的に送信し、クライアントがinvalid_inputと無効なUTF-8または無効な16進を示すエラーメッセージを処理することを確認してください。ペイロードは公開されている文字数制限以下に保ち、数メガバイトのダンプはオフラインで行ってください。このツールはバイナリビットコンバーターではありません(バイナリグループは2進で16進ではありません)。invalid_inputを返す失敗タスクはプリペイド残高を消費しないため、学習者が不完全な16進を貼り付けても探索的スクリプトは安価に保たれます。
技術的な質問
無効なUTF-8シーケンスの場合はどうなりますか?
decodeモードは致命的なUTF-8検証を使用します。不完全なマルチバイトシーケンスや不正なバイトを形成する16進は、置換文字ではなくinvalid_inputを返します。