0

Response.Write を使用してブラウザにvCardをダウンロードし、特殊なアクセント付き文字を含む .NET 文字列を出力しています。MIME タイプがtext/x-vcardであり、フランス語の文字が Outlook で正しく表示されない。たとえば、Montréal;Québec.NET 文字列Montréal Québecがブラウザで表示される。

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

CodeProject.com の vCard ジェネレーター コードを使用しています。

このリンクされた MSDN ページの下部にある System.Encodingサンプル コードを使用して、Unicode 文字列をバイトに変換し、ASCII バイトを書き込んでみましたが、Montr?al Qu?bec(進行はしますが、勝利ではありません)。また、コンテンツ タイプを us-ascii と応答の utf-8 の両方に設定しようとしました。

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

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

4

2 に答える 2

1

éこれはé、UTF-8 としてエンコードされ、誤って ISO-8859-1 または windows-1252 (または、Microsoft アプリが好むように「ANSI」) としてデコードされた場合の外観です。メモ帳でファイルを開くと、エンコードが UTF-8 として自動的に検出されます。次に、エンコードを「ANSI」として保存して変更します。これéは、そのエンコードでもサポートされているため機能します。

Outlook でページを表示すると、エンコーディングは何と表示されますか? その HTTP ダンプは整形式の UTF-8 のように見えますが、Outlook はそれを ISO-8859-1 または windows-1252 として読み取っているようです。私は Outlook を使用しておらず、その癖もわかりません。あなたはヘッダーを正しく持っていると確信していますか?

于 2010-03-28T21:42:58.327 に答える
0

何も変換する必要はありません!text/x-vcard ドキュメントのHTTP 応答ヘッダーで、応答が UTF-8 でエンコードされていることを指定するだけです (Response.CharSetまたはResponse.ContentEncoding類似の状況 - 特定の状況がわからない)。

また、UTF-8 バイト オーダー マークを発行して、クライアントがエンコーディングを判断できるようにすることもできます。

于 2010-04-02T09:22:49.617 に答える