2 Stimmen

C# konvertiert ISO-8859-1 Zeichen in Entitätsnummer

Ich kann nicht herausfinden, wie ich ISO-8859-1-Zeichen wie é in die entsprechende Entitätsnummer umwandeln kann. é .

Ich möchte in der Lage sein, eine Zeichenkette zu nehmen, wie zum Beispiel: "Stahldekor"

und lassen Sie es umwandeln in: "Stahl D é cor"

3voto

Bradley Grainger Punkte 25874

Unter der Annahme, dass Sie sich nicht um HTML-kodierte Sonderzeichen kümmern (z.B. <, &, etc.), funktioniert eine einfache Schleife über die Zeichenkette:

string input = "Steel Décor";
StringBuilder output = new StringBuilder();
foreach (char ch in input)
{
    if (ch > 0x7F)
        output.AppendFormat("&#{0};", (int) ch);
    else
        output.Append(ch);
}
// output.ToString() == "Steel D&#233;cor"

En if Anweisung muss möglicherweise geändert werden, um auch Zeichen zu vermeiden < 0x20 oder nicht alphanumerisch usw., je nach Ihren genauen Bedürfnissen.

1voto

liggett78 Punkte 11178

HttpUtility.HtmlEncode macht das. Es befindet sich in System.Web.dll aber so wird nicht mit .NET 4 Client Profile zum Beispiel arbeiten.

1voto

Kendo Punkte 41

LINQ verwenden

string toDec(string input)
{
    Dictionary<string, char> resDec =
        (from p in input.ToCharArray() where p > 127 select p).Distinct().ToDictionary(
            p => String.Format(@"&#x{0:D};", (ushort)p));

    foreach (KeyValuePair<string, char> pair in resDec)
        input = input.Replace(pair.Value.ToString(), pair.Key);
    return input;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X