2011-06-20 15 views
2

.NETを介してXMLファイルに出力するために、エンコーディング文字に問題が発生しています。私は問題が使用されているResponseオブジェクトの設定に関係していると感じていますが、正しい設定を見つけることができません。.net HTMLエンコーディングISO10646文字、トレードマーク、ユーロなど

私は次のような場合:

system.web.httpcontext.current.response.write("€ & ™" & server.HTMLEncode(" € & ™ ")) 

を私は次のような出力が得られます。

€ & ™ € & ™ 

疑問は、なぜエンコードされた標準のASCII文字ですが、拡張された文字はありませんか(?)?ユーロ/トレードマークのような文字を変換するためにサーバオブジェクトに与える必要のある設定はありますか?

そのコードよりも、大きいかは0x80に等しいASCII文字値がある&#に変換される任意のASCIIコードの文字:

MSDNのHTMLEncode機能ページの箇条書きの一つは、と述べています。

+0

最新のドキュメントをお探しですか?これは古典的なASP用ではないと確信していますか? – Oded

答えて

2

classic ASP server objectsのドキュメントを見ているようです。

ASP.NET文字列はASCIIベースではなくUnicodeベースであり、documentationにはASCIIはありません。

TextWriterEncoding.AsciiEncodingで初期化したオーバーロードを使用する場合、ASCIIエンコードを保証できます。

+0

ありがとう、あなたは間違ったドキュメントを見ていましたが、ASCIIリファレンスは赤ちゃんだと思います。私は文字列自体をAsciiに変換したくない。テキストライターの出力を使用すると、ASCII以外の文字は変換されませんか? Encoding.Convertメソッドを使用したかのように? 私が誤解しているようにこれがあなたの説明に含まれている場合、謝罪しますが、なぜユーロ/商標のような文字がデフォルトで何らかの方法でコード化されていないのはなぜですか?< or >は? – JLo

+0

@JLo - Unicodeであり、ブラウザがUnicodeを問題なく表示できるため、エンコードされません。 HTMLEncodeはデフォルトでUTF-8を使用しますが、これらはエンコードする必要はありません。 – Oded

+0

ありがとう:)私は完全に気違いしていないことを嬉しく思っています。これは、私たちが送信するデータでエンコーディングを行うべきであると主張するデータの外部受信者のために、私が心配している限り、データを表示する方法でデータをエンコードするのは受信者の責任です!しかし、受取人が大規模なフルーツベースのコンピュータ会社である場合、常に勝つことはできません。私はここからそれを取ることができると思う! – JLo

関連する問題