ブラウザーにダウンロードされた ASP.NET 文字列のデバッグ (モントリオールではなくモントリオール)
-
22-09-2019 - |
質問
ダウンロードしています 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」、としてそれを保存してエンコーディングを変更します。
、それはエンコーディングが何であるかを言うのでしょうか?そのHTTPダンプルックスは私にはよく形成されUTF-8を好きですが、OutlookはISO-8859-1またはWindows-1252としてそれを読んでいるように見えます。私はOutlookを使用していないと私はその癖を知りません。あなたはあなたが右のヘッダを持っている?
他のヒント
あなたは何を変換する必要はありません!ただ、テキスト/ X-vCardの上を HTTPレスポンスヘッダに指定応答がUTF-8でエンコードされた( - ないでください、あなたの特定の状況が何であるかをResponse.CharSet
またはResponse.ContentEncoding
または類似)であることを文書。
また、あなたは UTF-8バイトオーダーマークに発光試みることができますクライアントは、エンコーディングを決定するのに役立ちます。