Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

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

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

中村 拓也

中村 拓也

Updated on 11月 12, 2024

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

Postmanの基本的な使い方を(初心者向け)チュートリアル

Postmanの基本的な使い方を(初心者向け)

Postmanは、APIテストなどを行うための定番のツールになります。API戦略を実施する場合は、Postmanを利用することで、その効率性を大幅に向上できます。そこで、本文では、基本的なPostmanの使い方を皆さんに紹介して、Postmanを全く使ったことがないユーザーでも、本文の内容を参照して、Postmanを使いこなすことができると思います。

中村 拓也

4月 8, 2025

Clineで無料体験!Gemini 2.5 Proが今すぐ試せる方法チュートリアル

Clineで無料体験!Gemini 2.5 Proが今すぐ試せる方法

Clineを通じてGoogleのGemini 2.5 Proに無料でアクセスできることで、生産性を向上させ、複雑な問題解決に役立つ強力なAIアシスタントを提供。制約はあるものの、無料の利点は大きい。

中村 拓也

3月 28, 2025

Cloudflareで実現する高性能MCPサーバー構築ガイド:7ステップ完全解説チュートリアル

Cloudflareで実現する高性能MCPサーバー構築ガイド:7ステップ完全解説

このガイドに従えば、Cloudflareで高性能なMCPサーバーをデプロイし、拡張性、安全性、パフォーマンスを向上させることができます。すべての工程を詳細に解説します。

中村 拓也

3月 24, 2025