文字化けを Base64 生バイトから修復する Encoding Repair API を公開しました
文字化けの修復は、分かってしまえば単純に見える一方で、
実際にはかなり面倒です。
特に日本語を含むデータでは、
- UTF-8 と Shift_JIS が混在する
- CSV や TSV の一部だけ壊れる
- ログや移行データが mojibake 化する
- いったん文字列化された結果、元の情報が失われる
といった問題がよく起きます。
そこで、Base64 化した生バイト列そのものを入力として受け取り、
文字化けを修復する API として Encoding Repair API を公開しました。
- Docs: https://apiron-lab.github.io/apis/encoding-repair.html
- RapidAPI: https://rapidapi.com/APIronlab/api/encoding-repair-api
- GitHub: https://github.com/APIron-lab/Encoding-Repair
なぜ「文字列」ではなく「生バイト」なのか
文字化け修復で厄介なのは、壊れた後の文字列だけを見ても、
元の状態が分からない ことです。
例えば、
- どのエンコーディングとして読まれたのか
- どこで誤変換されたのか
- もともと UTF-8 だったのか Shift_JIS だったのか
といった情報は、文字列化の時点でかなり失われます。
そこでこの API では、Base64 にした raw bytes をそのまま渡す 方式を
採用しています。
つまり、
- 元データのバイト列を Base64 化する
- API に投げる
- API 側でエンコーディングを解析して修復する
という流れです。
この方式にすると、コピー&ペーストや途中変換で情報が欠けにくくなり、
日本語を含むレガシーデータでも比較的安全に扱えます。
何に使えるのか
主な用途は次のようなものです。
- Shift_JIS / UTF-8 / EUC-JP 混在データの修復
- レガシー CSV / TSV / LOG の文字化け補正
- システム移行時に壊れたテキストの復元
- AI / LLM に渡す前のテキスト正規化
- 日本語を含む多言語データの前処理
特に「壊れた文字列をどうにかする」のではなく、元の bytes から戻したい という
場面に向いています。
API の基本仕様
リクエスト例:
{
"raw_bytes_base64": "44OG44K544OI",
"mode": "auto",
"target_encoding": "utf-8"
}
レスポンス例:
{
"result": {
"fixed_text": "テスト",
"target_encoding": "utf-8",
"changed": false
},
"meta": {
"version": "2.0.0",
"mode_used": "auto",
"detected_path": "utf-8->utf-8",
"confidence": 1.0,
"status": "ok",
"execution_ms": 41.1,
"input_bytes_length": 9
}
}
result と meta を分けた構造にしているので、
- 修復結果そのもの
- 判定経路
- confidence
- 実行時間
を分けて扱いやすくしています。
対応している主な文字コード
主に以下を対象にしています。
- UTF-8
- Shift_JIS / CP932
- EUC-JP
- Latin-1
- Windows-1252
日本語中心ですが、英語や欧文が混じるデータも想定しています。
Python から使う例
例えば Python ならこのように使えます。
import base64
import requests
raw = "テスト".encode("utf-8")
b64 = base64.b64encode(raw).decode("ascii")
payload = {
"raw_bytes_base64": b64,
"mode": "auto",
"target_encoding": "utf-8",
}
res = requests.post(
"https://encoding-repair-api.p.rapidapi.com/encoding/v2/repair",
json=payload,
headers={
"x-rapidapi-key": "YOUR_RAPIDAPI_KEY",
"x-rapidapi-host": "encoding-repair-api.p.rapidapi.com"
}
)
print(res.json())
※実際には、CSV ファイルやログファイルから bytes を取り出して Base64 化し、
そのまま投げる使い方が自然だと思います。
この API を作った理由
文字化けは、技術的には昔からある問題です。
ですが、今でも普通に発生します。
特に、
- 古い業務システム
- Windows / Unix 混在環境
- レガシー資産の移行
- AI 用の前処理パイプライン
では、まだ十分に現役の問題です。
しかも厄介なのは、完全に壊れるよりも中途半端に読めてしまうケースが多いことです。
読めるようで読めない、直せそうで毎回微妙に違う。この面倒さが厄介です。
そこで、毎回それを調査するスクリプトを書くのではなく、
API として切り出して使える形にしよう と思い今回のAPIを作りました。
公開先
- Docs: https://apiron-lab.github.io/apis/encoding-repair.html
- RapidAPI: https://rapidapi.com/APIronlab/api/encoding-repair-api
- GitHub: https://github.com/APIron-lab/Encoding-Repair
- APIron Lab: https://apiron-lab.github.io/
まとめ
Encoding Repair API は、Base64 化した生バイト列から文字化けを修復する API です。
すでに壊れた文字列だけを見るのではなく、元の bytes を扱うことで、
- より安全に
- より再現性を持って
- 日本語を含むレガシーデータにも対応しやすく
することを狙っています。
文字化けは派手な問題ではありませんが、実務ではかなりしぶとく残ります。
だからこそ、こういうものこそ API として切り出す価値があると思っています。