2016-03-12 11 views
10

私はこれら二つの文字列(Googleドキュメントから1と端末からの1)をコピーして貼り付け - 一体何が起こっていますか?そして、私はそれらをきれいにすることができるので、彼らは同じですか?Golangなぜこれらの2つの文字列は同じではありませんか?

package main 

import "fmt" 

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

戻り値:

[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] 

明確に同じ文字列には2つの異なるバイト配列です。

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

+0

vimのに貼り付けるように見えるされているものです最初の文字列、2番目の文字列と同じです。私はそれが文字列のエンコーディングとは何かを持っていると思う。これを確認してください。https://play.golang.org/p/fSgO40Nz_- – Lansana

答えて

13

第一方は「ソフトハイフン」(U + 00AD)可視文字間の文字数を有する、「482」および「E4」との間に現れる最初のもの。ソフトハイフンは、改行の位置にない限り目に見えない文字です。ハイフンで表示されます。ワードプロセッサや特別なテキストフォーマットを適用した可能性のある他のプログラムからコードをコピーして貼り付けましたか?

+0

を私はコピーして、Googleドキュメントのプレビューモードから実際にペーストしました。おかげで私はK2xL @この謎 – K2xL

+0

を解く助けるためええ、常にコードに対処するためのものではありませんし、アプリケーションからのコードをコピーするとき、彼らはそれに面白いもののすべての種類を行うことができますように注意してください:) – hobbs

4

問題は、第1の遊び場の印刷可能ていない4つのユニコードソフトハイフン0+00adを有することです。あなたが実際にやっていることと基本的に同様である

...

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

これは最初のものをコピーし、それを複数回の重複を貼り付け

This is a screenshot in vim

関連する問題