Heim >Backend-Entwicklung >Golang >Wie konvertiert man HTML-Escape-Sequenzen effizient in Go?
Escape-Zeichen in HTML-Tags konvertieren
In Go ist die Konvertierung von HTML-Tags, die Escape-Zeichen enthalten, nicht so einfach wie gewünscht. Während json.Marshal() problemlos Zeichenfolgen mit Zeichen wie „<“ konvertieren kann Zu seiner Escape-Sequenz „u003chtmlu003e“ bietet json.Unmarshal() keine direkte und effiziente Methode für den umgekehrten Vorgang.
Verwendung von strconv.Unquote()
Für die Konvertierung kann die Funktion strconv.Unquote() eingesetzt werden. Allerdings muss die Zeichenfolge in Anführungszeichen eingeschlossen werden. Daher ist das manuelle Hinzufügen dieser umschließenden Zeichen erforderlich.
import ( "fmt" "strconv" ) func main() { // Important to use backtick ` (raw string literal) // else the compiler will unquote it (interpreted string literal)! s := `\u003chtml\u003e` fmt.Println(s) s2, err := strconv.Unquote(`"` + s + `"`) if err != nil { panic(err) } fmt.Println(s2) }
Ausgabe:
\u003chtml\u003e <html></p> <p><strong>Hinweis:</strong></p> <p>Das HTML-Paket ist ebenfalls verfügbar für HTML-Text-Escape und Unescaping. Allerdings werden keine Unicode-Sequenzen der Form uxxxx dekodiert, sondern nur decimal; oder HH;.</p> <pre class="brush:php;toolbar:false">import ( "fmt" "html" ) func main() { fmt.Println(html.UnescapeString(`\u003chtml\u003e`)) // wrong fmt.Println(html.UnescapeString(`&#60;html&#62;`)) // good fmt.Println(html.UnescapeString(`&#x3c;html&#x3e;`)) // good }
Ausgabe:
\u003chtml\u003e <html> <html>
Hinweis 2:
Denken Sie daran, dass Zeichenfolgen in Anführungszeichen mit doppelten Anführungszeichen ( ") sind interpretierte Zeichenfolgen, die vom Compiler nicht in Anführungszeichen gesetzt werden. Um eine Zeichenfolge mit intakten Anführungszeichen anzugeben, verwenden Sie Backticks, um eine Rohzeichenfolge zu erstellen wörtlich.
s := "\u003chtml\u003e" // Interpreted string literal (unquoted by the compiler!) fmt.Println(s) s2 := `\u003chtml\u003e` // Raw string literal (no unquoting will take place) fmt.Println(s2) s3 := "\u003chtml\u003e" // Double quoted interpreted string literal // (unquoted by the compiler to be "single" quoted) fmt.Println(s3)
Ausgabe:
<html> \u003chtml\u003e
Das obige ist der detaillierte Inhalt vonWie konvertiert man HTML-Escape-Sequenzen effizient in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!