發現好多新人都不明白,或者說沒有直觀的感覺,其實很簡單。java
簡單的說,unicode是一種將全球文字都涵蓋的字典 - 能夠認爲每一個字符都有一個數字索引。golang
好比能夠這樣(假設):'a' 的索引是13,'我' 的索引是11245,'の' 的索引是 50789等等。編碼
這樣,任何人只要拿着數字就能夠找到對應的字符。code
那麼,UTF8又是怎麼回事?索引
仍是要從unicode提及,咱們能夠認爲unicode只是字符與數字的對應關係,至於怎麼保存這個數字(保存了數字,也就等於保存了字符),那就是unicode用戶的事了。unicode
(多說一句,這裏的unicode用戶不是你我他這種,而是程序)字符串
各路大神紛紛實現了本身的存儲方式,或者考慮編解碼效率,或者考慮存儲效率。效率
但各自爲戰老是不方便溝通交流,因而某個組織推出了一種編碼UTF,號召你們都用這個。程序
只不過這個編碼工做顯然也須要一代一代的迭代進化,因此有了今天的UTF8編碼。兼顧存儲效率和讀寫效率。poi
字符串字面值,說白了就是一串unicode序列。
若是你搞Java,那在java.lang.String裏有code point的概念,這個code point應該指的就是unicode - 明天確認一下。
若是你搞golang,應該知道golang中全部字符串都是UTF8編碼,還有一個rune類型,不妨想一想是怎麼回事。
ps:
至於爲何出現unicode,這就跟春秋戰國時期各個國家都有本身的文字同樣,溝通很不方便,並且可能同樣的字形大相徑庭的含義。
因而有了unicode,保證了你們書同文車同軌,剩下的愛怎麼使用這種文字都是你的事了。