ContainsRune给出了奇怪的结果

rob*_*rit 2 unicode utf-8 go

我在Go Playground中运行此代码:

fmt.Println(strings.ContainsRune("\xa0", '\xa0'))
Run Code Online (Sandbox Code Playgroud)

我想知道,为什么输出false?根据文档,它说:

如果Unicode代码点r在s内,则ContainsRune返回true.

在我看来代码点就在那里,它似乎很奇怪,它会false作为一个回应.

sbe*_*rry 5

"\ x0a"不是unicode代码点.

fmt.Println(strings.ContainsRune("\u00a0", '\u00a0'))
Run Code Online (Sandbox Code Playgroud)

按预期工作.

  • @robbrit'\ xa0'是一个有效的代码点 - 一个不间断的空间."\ xa0"不是有效的UTF-8字符串.当UTF-8编码时,'\ xa0'将为"\ xc2\xa0".尝试:`fmt.Print([] byte(string('\ xa0')))` (3认同)