ブラウザーにダウンロードされた ASP.NET 文字列のデバッグ (モントリオールではなくモントリオール)

StackOverflow https://stackoverflow.com/questions/2531794

質問

ダウンロードしています vカード Response.Write を使用してブラウザに、特殊なアクセント付き文字を含む .NET 文字列を出力します。MIME タイプは テキスト/x-vcard たとえば、フランスのキャラクターはOutlookで間違っているように見えます Montréal;Québec .NET 文字列は次のように表示されます Montréal Québec ブラウザで。

どうやら vCard のデフォルト形式は ASCII のようです。.NET 文字列は Unicode UTF-16 です。

これを使っています CodeProject.com の vCard ジェネレーター コード

System.Encoding を試してみました このリンクされた MSDN ページの下部にあるサンプル コード Unicode文字列をバイトに変換してからASCIIバイトを書き込むと、次の結果が得られます Montr?al Qu?bec (進歩はしているが勝利ではない)。また、コンテンツタイプを応答の us-ascii と utf-8 の両方に設定してみました。

ダウンロードした vCard を Windows メモ帳で開き、(デフォルトの Unicode 形式ではなく) ANSI テキストとして保存し、Outlook で開いても問題ありません。したがって、私の仮定は、ANSI 文字セットのダウンロードを引き起こす必要があるということですが、それが間違っているのか、どこから始めればよいのか誤解しているのかわかりません。

アップデート: 生の HTTP を見ると、フランス語の文字が予期しない形式でダウンロードされているようです。そのため、サーバー側で何らかの作業を行う必要があるようです...生 http://img444.imageshack.us/img444/8533/charsd.png (フルサイズ)

役に立ちましたか?

解決

éは、(Microsoftがそれを呼びたいアプリとして、または「ANSI」)それはUTF-8としてエンコードされたと誤ってISO-8859-1またはWindows-1252としてデコードされますときのようなルックスをéものです。メモ帳でファイルを開くと、自動的にUTF-8などのエンコーディングを検出します。そして、あなたはéは、同様にその符号化によってサポートされているので、作品「ANSI」、としてそれを保存してエンコーディングを変更します。

Outlookでページを表示すると、

、それはエンコーディングが何であるかを言うのでしょうか?そのHTTPダンプルックスは私にはよく形成されUTF-8を好きですが、OutlookはISO-8859-1またはWindows-1252としてそれを読んでいるように見えます。私はOutlookを使用していないと私はその癖を知りません。あなたはあなたが右のヘッダを持っている?

他のヒント

あなたは何を変換する必要はありません!ただ、テキスト/ X-vCardの上を HTTPレスポンスヘッダに指定応答がUTF-8でエンコードされた( - ないでください、あなたの特定の状況が何であるかをResponse.CharSetまたはResponse.ContentEncodingまたは類似)であることを文書。

また、あなたは UTF-8バイトオーダーマークに発光試みることができますクライアントは、エンコーディングを決定するのに役立ちます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top