特殊文字•
をHTMLにデコードする方法がわかりましたか?C#で特殊文字をデコードする
私はSystem.Web.HttpUtility.HtmlDecode
を使用しようとしましたが、運はまだありません。
特殊文字•
をHTMLにデコードする方法がわかりましたか?C#で特殊文字をデコードする
私はSystem.Web.HttpUtility.HtmlDecode
を使用しようとしましたが、運はまだありません。
HtmlDecodeは、HTMLでエンコードされた文字列を読み込み可能な文字列形式に変換するためのものです。おそらくHtmlEncode
があなたが実際に探しているものかもしれません。
ここでの問題は、HTMLのデコードではなく、テキストが1つの文字セット(Windows-1252など)でエンコードされ、次に2番目(UTF-8)として再度エンコードされたことです。
UTF-8では、•
は、E2 80 A2
としてデコードされます。このバイトシーケンスがwindows-1252エンコーディングを使用して読み取られるとき、E2 80 A2
は•
としてエンコードします。
ファイルがWindows-1252でエンコードされたファイルの場合、ファイルは正しいエンコーディングで簡単に読み取ることができます(StreamReaderコンストラクタの引数など)。 :
new StreamReader(..., Encoding.GetEncoding("windows-1252"));
ファイルが誤ったエンコードで保存された場合、エンコードが逆転することがあります。例えば、あなたの質問内の文字列の順序のために、あなたが書くことができます。
string s = "•"; // the string sequence that is not properly encoded
var b = Encoding.GetEncoding("windows-1252").GetBytes(s); // b = `E2 80 A2`
string c = Encoding.UTF8.GetString(b); // c = `•`
注意を多くの一般的な非印字文字が範囲内にあることをU+2000
な「スマート引用符」、弾丸、およびダッシュなどU+2044
(Reference)、へ。従って、配列â€?
(?
は任意の文字)は、通常、このタイプのエンコーディングエラーを示します。これは、このタイプのエラーは、より広く補正することができる。この方法で不正な形式のテキストでこの関数を呼び出す
static string CorrectText(string input)
{
var winencoding = Encoding.GetEncoding("windows-1252");
return Regex.Replace(input, "â€.",
m => Encoding.UTF8.GetString(winencoding.GetBytes(m.Value)));
}
は、いくつかの(すべてではない)エラーを修正します。たとえば、CorrectText("•Test–or“")
は、•Test–or“
を返します。
私はOPが '' ''の代わりに '•'を見たいと思っています。 – Musa
ああ、それは*文字*ではないということです。 – pcnThird
どのように '' ''に翻訳されますか?箇条書きのHTML表現は '•'です - 何か不足していますか? –