2016-06-14 14 views
2

ゴーは自動エスケープをテンプレートが、唯一の5つの文字が<> &」と""「)golangテンプレートでは?

html.EscapeStringを参照)ので、

のような、このコード(あなたがここで確認することができますよう: Go Playground
check := func(err error) { 
    if err != nil { 
     log.Fatal(err) 
    } 
} 
t, err := template.New("foo").Parse(`{{define "T"}}special chars: {{.}}{{end}}`) 
check(err) 
err = t.ExecuteTemplate(os.Stdout, "T", "<>&' äåüöß") 
check(err) 

戻り

special chars: &lt;&gt;&amp;&#39; äåüöß 

は、どのように私は、テキストをレンダリングするためにgolangテンプレートを使用してくださいäåüößのような文字を含む可能性がありますか?

私はこれらを自分自身から逃れることはできません。 "ä"は "& auml;"にエスケープします。つまり、手動でエスケープすると、golangは2回目の "&"文字部分をエスケープし、 "& amp; auml;" (ただし、htmlファイルには、エスケープされた「& auml;」が1つ含まれているので、ブラウザには「ä」と表示されます)。

+0

なぜこれらの文字のエスケープ/エンティティを使用する必要がありますか?彼らはutf-8とiso-8859-1の両方のエンコーディングでうまくいきますが、私は... – BadZen

+0

私はスウェーデンに住むドイツ人ですので、データ(例:姓)にこれらの文字が含まれていて、現在 "ö "のように見える"¶ "。 – StephanS

+0

HTML文書ではどのような文字エンコードが指定されていますか? (理想的には、あなたが見ているページに私たちをリンクさせることができますか?サーバーはドキュメントの設定を上書きできます...) – BadZen

答えて

1

現代のブラウザでは、これらの文字はそのままですが、ウェブページで文字エンコーディングを指定する必要があります。

は、ドキュメントの頭の中でライン

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

を追加します。

HTMLでの文字エンコードの詳細については、W3C documentationを参照してください。

関連する問題