現在、唯一の出力として zip アーカイブを返す PHP Web サービスがあります。ディスクから zip アーカイブを読み込んfile_get_contents
で、応答の本文として送り返しています。
JSON 形式で追加のメタデータを返したいと思います。
{
"generatedDate": "2012-11-28 12:00:00",
"status": "unchanged",
"rawData": <zip file in raw form>
}
このサービスと対話する iOS アプリは、この応答を受け取り、JSON を解析してから、独自に使用するために zip ファイルをローカルに保存します。
ただし、結果をfile_get_contents
json_encode に詰め込もうとすると、当然、文字列が UTF-8 形式ではないというエラーが表示されます。を使用して UTF-8 エンコードするとmb_convert_encoding($rawData, 'UTF-8',
mb_detect_encoding($rawData, 'UTF-8, ISO-8859-1', true));
、問題なくエンコードされますが、クライアントで操作を逆にする方法が見つかりません (呼び出し[dataString dataUsingEncoding:NSUTF8StringEncoding]
て結果を zip ファイルとして処理すると、BOM could not extract archive: Couldn't read pkzip local header
.
生データのブロブをJSON 応答の1 つのフィールドとして挿入する良い方法を提案できる人はいますか?