我有一个 PHP 网络服务,它当前返回一个 zip 存档作为其唯一输出。我正在使用从磁盘读取 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 响应中将原始数据块作为一个字段插入的好方法?