Go Wiki: GoStrings
文字列は必ずしもUTF-8である必要はありません。Goソースコードは必ずUTF-8である必要があります。その間には複雑な経路があります。
簡単に言うと、3種類の文字列があります。
- ソースのサブストリングで、文字列リテラルに字句解析されます。
- 文字列リテラル。
- string型の値。
最初のものだけがUTF-8である必要があります。2番目はUTF-8で記述する必要がありますが、その内容はさまざまな方法で解釈され、任意のバイトをエンコードする場合があります。3番目には、任意のバイトを含めることができます。
これを実行してみましょう
var s string = "\xFF語"
ソースサブストリング: "\xFF語"
、UTF-8エンコード。データ
22
5c
78
46
46
e8
aa
9e
22
文字列リテラル: \xFF語
(引用符の間)。データ
5c
78
46
46
e8
aa
9e
文字列値(印刷不可。これはUTF-8ストリームです)。データ
ff
e8
aa
9e
そして記録として、文字(コードポイント)
<erroneous byte FF, will appear as U+FFFD if you range over the string value>
語 U+8a9e
このコンテンツはGo Wikiの一部です。