Python と Javascript について同様の質問と回答が見つかりましたが、C# やその他の WinRT 互換言語については見つかりませんでした。
必要だと思う理由は、Web サイトから取得したテキストを Windows 8 ストア アプリに表示しているためです。たとえばé
、になる必要がありé
ます。
それとももっと良い方法がありますか?Web サイトや RSS フィードは表示していませんが、Web サイトとそのタイトルのリストのみを表示しています。
Python と Javascript について同様の質問と回答が見つかりましたが、C# やその他の WinRT 互換言語については見つかりませんでした。
必要だと思う理由は、Web サイトから取得したテキストを Windows 8 ストア アプリに表示しているためです。たとえばé
、になる必要がありé
ます。
それとももっと良い方法がありますか?Web サイトや RSS フィードは表示していませんが、Web サイトとそのタイトルのリストのみを表示しています。
System.Net.WebUtility.HtmlDecodeを使用することをお勧めします HttpUtility.HtmlDecode
。
これは、System.Web
参照がWinforms / WPF / Consoleアプリケーションに存在せず、このクラス(これらすべてのプロジェクトで参照として既に追加されている)を使用してまったく同じ結果を取得できるためです。
使用法:
string s = System.Net.WebUtility.HtmlDecode("é"); // Returns é
ここHttpUtility.HtmlDecode()
で msdn で .Readを使用します
decodedString = HttpUtility.HtmlDecode(myEncodedString)
Metro アプリと WP8 アプリで HTML エンティティと HTML 番号の異なるコーディング/エンコーディング。
{
string inStr = "ó";
string auxStr = System.Net.WebUtility.HtmlEncode(inStr);
// auxStr == ó
string outStr = System.Net.WebUtility.HtmlDecode(auxStr);
// outStr == ó
string outStr2 = System.Net.WebUtility.HtmlDecode("ó");
// outStr2 == ó
}
{
string inStr = "ó";
string auxStr = System.Net.WebUtility.HtmlEncode(inStr);
// auxStr == ó
string outStr = System.Net.WebUtility.HtmlDecode(auxStr);
// outStr == ó
string outStr2 = System.Net.WebUtility.HtmlDecode("ó");
// outStr2 == ó
}
これを解決するために、WP8 では、 を呼び出す前にHTML ISO-8859-1 リファレンスにテーブルを実装しましたSystem.Net.WebUtility.HtmlDecode()
。
これは私にとってはうまくいき、一般的なエンティティとユニコードエンティティの両方を置き換えます。
private static readonly Regex HtmlEntityRegex = new Regex("&(#)?([a-zA-Z0-9]*);");
public static string HtmlDecode(this string html)
{
if (html.IsNullOrEmpty()) return html;
return HtmlEntityRegex.Replace(html, x => x.Groups[1].Value == "#"
? ((char)int.Parse(x.Groups[2].Value)).ToString()
: HttpUtility.HtmlDecode(x.Groups[0].Value));
}
[Test]
[TestCase(null, null)]
[TestCase("", "")]
[TestCase("'fark'", "'fark'")]
[TestCase(""fark"", "\"fark\"")]
public void should_remove_html_entities(string html, string expected)
{
html.HtmlDecode().ShouldEqual(expected);
}
Zumey メソッドの改善 (コメントできません)。最大文字サイズはエンティティにあります: &exclamation; (11)。エンティティの大文字も可能です。À (ウィキからの出典)
public string EntityToUnicode(string html) {
var replacements = new Dictionary<string, string>();
var regex = new Regex("(&[a-zA-Z]{2,11};)");
foreach (Match match in regex.Matches(html)) {
if (!replacements.ContainsKey(match.Value)) {
var unicode = HttpUtility.HtmlDecode(match.Value);
if (unicode.Length == 1) {
replacements.Add(match.Value, string.Concat("&#", Convert.ToInt32(unicode[0]), ";"));
}
}
}
foreach (var replacement in replacements) {
html = html.Replace(replacement.Key, replacement.Value);
}
return html;
}