POST メソッドを使用してファイルを受け取り、操作を行い、HTTP 応答を使用してそれらを返す Web API を開発しました。Web API は、出力ファイル名などの http ヘッダーに追加データを返します。問題は、HttpWebResponse で応答を投稿して受信すると、応答ヘッダー値でスクランブルされたファイル名が取得され、Unicode 文字が失われることです。
たとえば、наталья.docx
ファイルを送信すると、 наÑалÑÑ.pdf
.
完全な応答ヘッダー
Pragma: no-cache
Transfer-Encoding: chunked
Access-Control-Allow-Origin: *
Result: True
StoreFile: false
Timeout: 300
OutputFileName: наÑалÑÑ.pdf
Content-Disposition: attachment; filename=наÑалÑÑ.pdf
Cache-Control: no-cache, no-store
Content-Type: application/pdf
Date: Wed, 12 Sep 2012 07:21:37 GMT
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4
このようなヘッダー値を読んでいます
HttpWebResponse webResponse = FormUpload.MultipartFormDataPost(postdatatoserver);
using (Stream clientResponse = webResponse.GetResponseStream())
if (webResponse.StatusCode == HttpStatusCode.OK)
{
Helpers.CopyStream(clientResponse, outStream);
webHeaderCollection = webResponse.Headers;
}
スクランブルされた文字を応答ヘッダーから読み取るときに Unicode にデコードするだけでよいのか、Web API サーバーからデータを送信するときに応答ヘッダーにエンコーディングを含める必要があるのか わかりません。