encoding=utf-8 utf-8,unicode,ansi解決方案有什么區(qū)別?
utf-8,unicode,ansi解決方案有什么區(qū)別?對(duì)于跨平臺(tái)兼容性,我們只需要知道,在Windows記事本的上下文中,所謂的“ANSI”是指與當(dāng)前系統(tǒng)的區(qū)域設(shè)置相對(duì)應(yīng)的遺留編碼。[1]所謂的“U
utf-8,unicode,ansi解決方案有什么區(qū)別?
對(duì)于跨平臺(tái)兼容性,我們只需要知道,在Windows記事本的上下文中,所謂的“ANSI”是指與當(dāng)前系統(tǒng)的區(qū)域設(shè)置相對(duì)應(yīng)的遺留編碼。
[1]所謂的“Unicode”是指帶有BOM的小端序列utf-16。[2] 所謂“UTF-8”是指帶有BOM的UTF-8。[3] 像GBK這樣的傳統(tǒng)編碼是最麻煩的,所以除非你知道你在做什么,否則不要使用它。Utf-16在理論上是非常好的,字節(jié)順序也被指出,但Utf-16畢竟不是常用的。UTF-8原本是最兼容的編碼,但是windows必須添加BOM,所以經(jīng)常出錯(cuò)。因此,最好的跨平臺(tái)兼容性是不使用記事本。建議使用記事本和其他普通的專業(yè)文本編輯器來保存沒有BOM的UTF-8。此外,如果文本中的所有字符都在ASCII范圍內(nèi),則保存在記事本中的所謂“ANSI”文件與沒有BOM的ASCII或UTF-8相同。
為什么C語言寫文件有時(shí)是ANSI有時(shí)是UTF8格式?
保存時(shí)可能與編輯器的格式有關(guān)。
通常,對(duì)于utf-16和其他格式,將在文件開頭添加字節(jié)順序標(biāo)記(BOM),以在加載時(shí)標(biāo)識(shí)文件代碼。
對(duì)于沒有BOM的文件,總編輯會(huì)讀取一定的內(nèi)容,分析內(nèi)容,猜測(cè)相應(yīng)的文件代碼,所以這種文件不會(huì)一直正確識(shí)別,所以會(huì)出現(xiàn)亂碼。
對(duì)于UTF-8,如果保存時(shí)未添加相應(yīng)的BOM表,則編輯器在加載時(shí)可能會(huì)出錯(cuò)。
但由于UTF-8與ANSI向下兼容,因此可以以UTF-8格式打開保存在ANSI中的文件。