Golang为什么这两个字符串不相等?

K2x*_*2xL 11 go

我复制并粘贴了这两个字符串(一个来自Google Doc,一个来自终端) - 到底是怎么回事?我怎样才能清理它们以便它们相同?

package main

import "fmt"

func main() {
    fmt.Println([]byte("f6f77482e4394a21815b7090bc0185b4"))
    fmt.Println([]byte("f6f77482­e439­4a21­815b­7090bc0185b4"))
}
Run Code Online (Sandbox Code Playgroud)

返回:

[102 54 102 55 55 52 56 50 101 52 51 57 52 97 50 49 56 49 53 98 55 48 57 48 98 99 48 49 56 53 98 52]
[102 54 102 55 55 52 56 50 194 173 101 52 51 57 194 173 52 97 50 49 194 173 56 49 53 98 194 173 55 48 57 48 98 99 48 49 56 53 98 52]
Run Code Online (Sandbox Code Playgroud)

对于相同的字符串,这显然是两个不同的字节数组.

https://play.golang.org/p/_zd7tjqCZl

hob*_*bbs 14

第二个在可见字符之间有许多"软连字符"(U + 00AD)字符,第一个字符出现在"482"和"e4"之间.软连字符是一个不可见的字符,除非碰巧位于换行符的位置,然后它显示为连字符.您是否从文字处理程序或其他可能已应用特殊文本格式的程序中复制粘贴代码?


sbe*_*rry 5

问题是第二个有 4 个 Unicode 软连字符0+00ad,它们不能在操场上打印。

你实际上在做什么基本上类似于......

fmt.Println([]byte("f6f77482e4394a21815b7090bc0185b4"))
fmt.Println([]byte("f6f77482­-e439­-4a21-­815b­-7090bc0185b4"))
Run Code Online (Sandbox Code Playgroud)

这是粘贴到 vim 中的样子

这是vim中的截图