ansi
早期的電腦只能表示256種符號,但是每個國家字都這麼多,所以有些國家將兩個字母合併來代表一個字母,big5, gbk, jis,皆是這樣。
但是每個國家都搞一套,第一有可能會有重覆的字,第二,在看文章的時候需要知道編碼,而且電腦裡面要裝編碼。
這實在是太蠢了,所以之後就發明了unicode。
unicode
常聽到的是萬國碼,但其實叫統一碼比較精確。為了防止上面的事情不斷發生,所以統一大家的文字,通通記成一套。
utf16 windows常用的編碼方式,所有的文字都是兩個bytes,像是從powershell跑出來的檔案,預設都是utf16。
utf8 變動字元,英文為一個bytes,中文通常為三個bytes,最多可以用四個bytes去記錄字元。
以速度來說,utf16 > utf8 (固定字元解析比較快),以儲存來說,英文夠多 utf8 > utf 16,網路世界重傳輸速度,所以utf8較為受歡迎。
所以寫網頁用utf8,寫應用程式用utf16。
至於有時候,windows檔案會出現的bom就是在記錄這個檔案是哪個編碼,但for more general use,還是使用不帶bom的編輯器吧。
另外有時候,linux的cli或是vim會出現亂碼,如果在某些情況能看到正常的檔案(例如cat file),這就看情況自己解吧(std out格式問題)。
通常是啟aws的機器沒特別設定,就降。