【告知】HTTP Requestがテキストをデコードする方法
【告知】HTTP Requestがテキストをデコードする方法
HTTP GetおよびHTTP Requestは,『受け取り』変数の型に合わせてレスポンスデータを自動的に変換します。扱うことができるのは,以下のデータ型です。
テキスト
ピクチャ
オブジェクト
BLOB(無変換)
http://doc.4d.com/4Dv15/4D/15.4/HTTP-Get.301-3274754.ja.html
http://doc.4d.com/4Dv15/4D/15.4/HTTP-Request.301-3274755.ja.html
テキスト型は,Webページ(HTML, JS, CSS)を取り込む場合,またWebサービスのAPIにアクセスしてCSV・XML・JSONなどのデータを受け取る場合に有用です。
自動変換は便利ですが,BLOB(無変換)を自分で処理するのとは違い,エンコーディングを明示的に指定することはできないので,変換に失敗し,空の文字列や『化けた』テキストが返されるリスクも負っています。
HTTP GetおよびHTTP Requestがレスポンスをテキスト型に変換する仕組みは下記のとおりです。
1
Content-Typeヘッダーにcharset属性があれば,それを使用する
2
1でエンコーディングが特定できなかった場合,レスポンスボディのBOM(バイトオーダーマーク)に基づき,Unicodeあるいはロケールの非Unicodeを使用する
3
2でエンコーディングが特定できなかった場合,レスポンスボディ内のmetaタグのhttp-equivにcharset属性(Content-Type=HTML)または宣言のencoding(Content-Type=XML)があれば,それを使用する
これは15.3.HF1以降の振る舞いです。
以前は,
1
Content-Typeヘッダーにcharset属性があれば,それを使用する
2
UTF-8であるとみなす
でした。
15.4以降にアップグレードした後,HTTPレスポンスが化けたり,空になったりするようであれば,サーバーから返されるContent-Typeヘッダーにcharset属性がない,あるいはBOMがないために,新しい2のステップで非Unicodeのエンコーディングが選択されている可能性があります。
もし,レスポンスがUTF-8である(あるいはShift_JISである)ということが事前に分かっているのであれば,自動判定に頼るよりも,まずはBLOBで受け取って自分で変換したほうが無難でしょう。
テキスト
ピクチャ
オブジェクト
BLOB(無変換)
http://doc.4d.com/4Dv15/4D/15.4/HTTP-Get.301-3274754.ja.html
http://doc.4d.com/4Dv15/4D/15.4/HTTP-Request.301-3274755.ja.html
テキスト型は,Webページ(HTML, JS, CSS)を取り込む場合,またWebサービスのAPIにアクセスしてCSV・XML・JSONなどのデータを受け取る場合に有用です。
自動変換は便利ですが,BLOB(無変換)を自分で処理するのとは違い,エンコーディングを明示的に指定することはできないので,変換に失敗し,空の文字列や『化けた』テキストが返されるリスクも負っています。
HTTP GetおよびHTTP Requestがレスポンスをテキスト型に変換する仕組みは下記のとおりです。
1
Content-Typeヘッダーにcharset属性があれば,それを使用する
2
1でエンコーディングが特定できなかった場合,レスポンスボディのBOM(バイトオーダーマーク)に基づき,Unicodeあるいはロケールの非Unicodeを使用する
3
2でエンコーディングが特定できなかった場合,レスポンスボディ内のmetaタグのhttp-equivにcharset属性(Content-Type=HTML)または宣言のencoding(Content-Type=XML)があれば,それを使用する
これは15.3.HF1以降の振る舞いです。
以前は,
1
Content-Typeヘッダーにcharset属性があれば,それを使用する
2
UTF-8であるとみなす
でした。
15.4以降にアップグレードした後,HTTPレスポンスが化けたり,空になったりするようであれば,サーバーから返されるContent-Typeヘッダーにcharset属性がない,あるいはBOMがないために,新しい2のステップで非Unicodeのエンコーディングが選択されている可能性があります。
もし,レスポンスがUTF-8である(あるいはShift_JISである)ということが事前に分かっているのであれば,自動判定に頼るよりも,まずはBLOBで受け取って自分で変換したほうが無難でしょう。
miyako- 投稿数 : 487
登録日 : 2016/07/05
Permissions in this forum:
返信投稿: 不可