■94983 / inTopicNo.2) |
Re[1]: Web上から読んだXMLがUTF-8の場合に文字化けします |
□投稿者/ 魔界の仮面弁士 (2745回)-(2020/06/09(Tue) 00:43:03)
|
■No94982 (c#初心者 さん) に返信 > response = webClient.UploadString("https://example.com/api", "POST", postData);
UploadString を呼ぶ前に、webClient.Encoding プロパティに何を設定していますか?
何も設定していなければ、Encoding.Default 相当になるはずなので、 おそらくは CodePage 932 (Shift_JIS) としてアップロード時にエンコード処理されていると思います。
一方、ダウンロード時には、サーバー側が Content-Type ヘッダーで Charset が明示していれば それが優先的に利用されます。もしも Charset が返されなかった場合は、データ先頭に BOM があればそれが利用され、BOM も無かった場合には、webClient.Encoding にてデコード処理されます。
> responseで取得した文字列はxmlデータなのですが、 > xdoc = XDocument.Parse(response); > とすると例外エラーが起きます。
それは、response の内容が既に破損していた…ということですよね?
Parse は、バイナリではなく String を受け取るものなので、それ自体には encoding という概念はありません。(文字集合という概念ならあります)
文字化けが問題になるようなら、UploadString ではなく UploadData を使うようにして、 string と byte[] の相互変換を、明示的に行ってやるという選択肢もあります。
|
|