私は C# と .Net 3.5 のデスクトップ クライアント プログラムを使用して Web サーバーとやり取りしています。Web ブラウザーが送信するトラフィックを確認し、それをエミュレートするために Fiddler を使用しています。残念ながらこのサーバーは古く、文字セットと UTF-8 の概念について少し混乱しています。主に Latin-1 を使用しています。
「Ω π ℵ ∞ ♣ ♥ ♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓」のような「特殊」文字を含むデータを Web ブラウザーに入力すると、フィドラーは、それらの文字がブラウザーからサーバーに次のように送信されていることを示します。"♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓ "
しかし、私のクライアントでは、HttpUtility.HtmlEncode はこれらの文字を変換せず、そのまま残します。"♈" を ♈ などに変換するには、何を呼び出す必要がありますか?
ベストアンサー1
リッチ・ストラールがブログ記事を投稿しました。System.Web を使用しない HTML および URI 文字列のエンコードここで、彼は文字の上限範囲をエンコードするカスタム コードもいくつか持っています。
/// <summary>
/// HTML-encodes a string and returns the encoded string.
/// </summary>
/// <param name="text">The text string to encode. </param>
/// <returns>The HTML-encoded text.</returns>
public static string HtmlEncode(string text)
{
if (text == null)
return null;
StringBuilder sb = new StringBuilder(text.Length);
int len = text.Length;
for (int i = 0; i < len; i++)
{
switch (text[i])
{
case '<':
sb.Append("<");
break;
case '>':
sb.Append(">");
break;
case '"':
sb.Append(""");
break;
case '&':
sb.Append("&");
break;
default:
if (text[i] > 159)
{
// decimal numeric entity
sb.Append("&#");
sb.Append(((int)text[i]).ToString(CultureInfo.InvariantCulture));
sb.Append(";");
}
else
sb.Append(text[i]);
break;
}
}
return sb.ToString();
}