cURLとutf-8:エンコードとデコードを解説

cURLを利用してAPIをテストする時に、たまに文字コードをUTF-8に指定する必要もあり、レスポンスで\uを先頭にされているUTF-8コードが表示されることがあります。このような場合、UTF-8文字コードのエンドコードとデコードが必要な作業になります。本文では、これらの対策について皆さんに紹介します。

中村 拓也

中村 拓也

25 7月 2025

cURLとutf-8:エンコードとデコードを解説

UTF-8(Unicode Transformation Format - 8-bit)は、文字エンコーディングの一種で、Unicode文字集合を可変長で表現する形式です。UTF-8は、最も汎用性の高い文字コードとして、様々な領域で利用されています。cURLを利用してAPIをテストする時に、たまに文字コードをUTF-8に指定する必要もあり、レスポンスで\uを先頭にされているUTF-8コードが表示されることがあります。このような場合、UTF-8文字コードのエンドコードとデコードが必要な作業になります。本文では、これらの対策について皆さんに紹介します。

cURLとUTF-8について

cURLはHTTP通信を扱うツールですが、リクエストやレスポンスのエンコードとしてUTF-8をデフォルトで想定しています。しかしながら、文字化けを防ぐためにいくつかのオプション設定が必要です。特にレスポンスデータの文字コード自動判定を無効化する-asciiオプションが大切です。

また、POSTデータなどクライアントから送信するデータは適切にUTF-8でエンコードする必要があります。送信用のデータ変換には注意が必要です。

cURLでエンコーディングをUTF-8に設定

curlでUTF-8の文字を適切に扱うためには、主に以下の2つのことが重要です。

ステップ⒈リクエストのエンコーディングをUTF-8に設定する

curl -H "Content-Type: application/json; charset=utf-8" http://example.com

上記のようにヘッダーでcharset=utf-8を指定します。

ステップ⒉文字コードの自動検出を無効にする

curlはデフォルトでサーバーからのレスポンスの文字コードを自動検出しますが、検出した文字コードで表示されてしまうと文字化けすることがあります。

このため-ASCIIオプションを使用して自動検出を無効にし、レスポンスをUTF-8として扱うようにします。

curl -H "Content-Type: application/json" -H "Accept: application/json" -ASCII http://example.com

このように設定しておくことで、リクエスト、レスポンスともにUTF-8で適切に扱えるようになります。curlだけでなく、Unicodeをサポートしている他のツールとの組み合わせなどで、文字化けが発生する場合はこの2つの設定を確認することをおすすめします。

cURLで取得したUTF-8のレスポンスを日本語にデコード

また、cURLコマンドでリクエストを送信すると、取得するレスポンスが\uを先頭にされているUTF-8コードが表示されることがあります。例えば、APIエンドポイントは政府統計の総合窓口(e-Stat)のAPIを例にします:

$ curl -X GET -H 'Content-Type:application/json;charset=utf-8' http://api.e-stat.go.jp/rest/3.0/app/json/getStatsList?appId=error

このリクエストでは、appId値をerrorに設定するので、エラーメッセージが返してくるのが想定できますね。しかし、実際にcURLコマンドを使ってリクエストを送信すると、次のレスポンスが返されます:

{"GET_STATS_LIST":{"RESULT":{"STATUS":100,"ERROR_MSG":"\u8A8D\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3ID\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002","DATE":"2023-12-04T16:20:46.399+09:00"},"PARAMETER":{"DATA_FORMAT":"J"}}}%   

参照元:https://qiita.com/ponsuke0531/items/9f798a9193a347266ff7

このように、元々読み解けるエラーメッセージのテキストが返されることを期待しますが、\uから始めて全然理解できないUTF-8コードを変えてしまいましたね。このような場合はどうしたらいいですか?

button

Apidogでレスポンスを自動的にデコードする

一部のサーバーの設定により、返されたレスポンスのデータがUTF-8文字コードで表示されることがあります。このような場合は、どうやってそれを人間で読めるテキストに変換すればいいですか?実際には、curlでそんなに頑張らなくても良いのでしょう。

Apidogは、非常に使いやすいAPI管理ツールとして、UTF-8を含む様々な文字エンコーディングにも対応できます。つまり、レスポンスから返されるレスポンスは、UTF-8文字コードであっても、Apidogはそれを人間が理解できるテキストに自動変換できますので、非常に便利です。

同じく政府統計の総合窓口(e-Stat)のAPIを呼び出そうとします。

ApidogはUTF-8を自動変換

上記の写真が示すように、cURLで返されたレスポンスのUTF-8文字コードが全部綺麗な日本語になりました。

まとめ

Apidogは、APIのテストや管理を支援するツールで、とても使いやすいインターフェースを提供しています。中でも、UTF-8の文字コードへの対応が大きな特徴といえるでしょう。例えば、政府統計のAPIをcURLで呼び出した場合、しばしばレスポンスがUTF-8の文字コードで返ってきます。これは人間には理解できない文字列になってしまいます。ところが、Apidogを使えば、このUTF-8の文字列を自動的に適切な日本語の文字列に変換してくれるのです。

つまり、面倒な文字コードの変換を全てApidogに任せることができるわけです。cURL単体では文字化けに対処するのは大変ですが、Apidogを併用することで、とても簡単にUTF-8のデータを扱えるようになるのです。

button

Explore more

GLM-5をローカルで無料実行する手順

GLM-5をローカルで無料実行する手順

本記事では、GLM-5 をローカル環境で無料実行する構成を中心に、クラウド API との違いや利点、必要なハードウェア要件を整理します。Unsloth GGUF と llama.cpp を用いた実行手順では、ビルド、量子化モデルの取得、推論開始、OpenAI API としての提供方法までを解説します。あわせて Ollama による簡易実行や、vLLM を利用した高性能デプロイにも触れます。さらにパフォーマンス最適化、一般的な問題への対処、ローカル GLM-5 と各種システム構成の方向性についても整理します。

13 2月 2026

OpenClaw(Moltbot/Clawdbot)最新版へのアップデート方法

OpenClaw(Moltbot/Clawdbot)最新版へのアップデート方法

本記事では、OpenClaw(旧Moltbot/Clawdbot)のアップデート作業を安全に実施するための実務的な手順を整理する。更新前のインストールトポロジー確認、バージョン固定、永続データのバックアップ、ランタイム状態の記録といった準備工程に加え、リリースノートを基にしたマイグレーション影響の評価方法を解説する。さらに、プレプロダクションでのステージング検証、Docker Compose・Docker・ソース運用など構成別の更新手順、Apidogを用いたAPIコントラクト検証と回帰テストの実行による整合性維持について扱う。

12 2月 2026

macOS/Windows/LinuxへのOpenClaw (Moltbot/Clawdbot) インストール手順

macOS/Windows/LinuxへのOpenClaw (Moltbot/Clawdbot) インストール手順

本記事ではmacOS、Windows、Linux環境にOpenClaw(Moltbot/Clawdbot)をインストールするための手順を整理し、ランタイムバージョン、環境設定、サービス依存関係の管理ポイントを解説します。ネイティブセットアップとDocker Composeによる構成の違い、代表的なインストールエラーへの対応、導入後のAPI検証やApidogを用いたエンドポイントテストとドキュメント同期の方法も扱います。

11 2月 2026

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる