網(wǎng)頁兩種亂碼情況及其處理方式
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
本文介紹兩種導致亂碼的情況,以及它們之間的聯(lián)系和處理辦法。 一、簡介有一種亂碼只是文件的打開方式不對而已,改用正確的方式打開亂碼就會消失。 比如一個原本用gb2312編碼的文件,你用默認設置了utf-8編碼的編輯器打開,那么文件中的中文就都會以亂碼形式呈現(xiàn)。 為啥只是中文亂碼? 因為gb2312本質(zhì)是ASCII碼的超集,而ASCII碼幾乎包含了全部常用的英文字符,包括26個英文字母及其標點符號。所以即使用gb2312,英文也不會亂碼。 這也是各種亂碼文件中英文總是能正常顯示,而其他的語言或者特殊字符總會不小心亂碼的原因,因為ASCII碼是各種常見編碼的子集。 還有一種亂碼則是在源碼層面已經(jīng)被錯誤編碼了,亂碼部分基本無法恢復,只能刪掉重新編輯。 這里的重點在于,第二種情況常常是第一種情況下的錯誤操作導致的。 也就是本來只是重新設置下編輯器編碼就能正常顯示的文件,可能因為一個誤操作被搞成永久性的亂碼文件。 二、舉例假設張三打開了一個html文件,發(fā)現(xiàn)文件里的中文都是亂碼,又看到meta標簽設置的編碼是gb2312。 這時的張三可能暗自思忖,別人都是用utf-8就你用gb2312,難怪你是亂碼。于是自作聰明直接把meta標簽的gb2312改成了utf-8。 張三在進行了上述操作后,保存文件,然后重啟編輯器。他覺得自己是統(tǒng)一了編碼,使用了“永遠不會亂碼的utf-8”,指望重新打開文件后亂碼會消失。 而實際情況卻是,不光亂碼不會消失,它還變成永久的了,原本正常的文件變成了一個無法恢復的亂碼文件。 這是因為在源碼中通過命令設置的編碼集,其影響的是編譯后的代碼或解釋器的執(zhí)行結(jié)果,而不會影響源碼本身的編碼。 而我們在編輯器中打開的源文件里看到的亂碼,其本質(zhì)是源碼,其展示是基于編輯器的編碼集,所以這時的編碼設置應該在編輯器的相關(guān)操作界面中進行。 如果我們只是在亂碼情況下改動了這個html文件的meta標簽,那么當前文件則會依照編輯器的一般默認編碼重新編碼為utf-8的文件并保存,這也包括里面的中文亂碼。 這也就是把原本只是在內(nèi)存中的因為編碼集不匹配導致的暫時性的亂碼,保存落地到了磁盤上。在事實上丟棄了原本正常的中文,而保存了因為錯誤解碼而產(chǎn)生的亂碼。 三、處理辦法在上文案例中,要消除源碼中的亂碼一定不能先動源碼,而是要先將編輯器的編碼也設置為gb2312,先讓亂碼消失。 也許有人會說那不行,因為他日常使用的多數(shù)文件和系統(tǒng)都是utf-8的,他不能為了這一個gb2312的文件改了編輯器編碼,讓其他的文件都亂碼顯示。 這其實也有辦法,只需要讓原本gb2312編碼的文件不再亂碼之后,使用編輯器的轉(zhuǎn)碼功能將當前文件從gb2312轉(zhuǎn)換為utf-8就行了。這時再將編輯器也還原為utf-8,就都可以正常顯示了。 閱讀原文:原文鏈接 該文章在 2025/8/25 13:32:35 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |