gbk 轉換 utf 8問題

2022-05-04 12:30:08 字數 919 閱讀 5841

問題一:

檔案已經另存為了utf-8碼,但關閉後重新開啟就自動變成了ansi編碼

答:原因是該檔案中沒有包含任何中文字元,如果該檔案有包含中文字元,將檔案另存為utf-8編碼後,中文字元會以3個位元組的寬度來儲存(要看16進製制**),這樣,在第二次開啟檔案時,編輯器會自動將檔案識別為utf-8編碼。請仔細檢查你的index.dwt檔案是否包含有中文,沒有中文的話,你打幾個中文注釋保證不會有問題

這裡面還存在乙個utf-8 bom頭的問題,bom頭是utf-8檔案最開始的3個位元組編碼,其十六進製製碼為:ef bb bf,一般情況下編輯器通過判斷檔案中開頭是否存在這三個位元組編碼,來識別此檔案是utf碼或ansi碼,但另外還存在一種情況是,utf-8編碼檔案中在儲存時選擇了「utf-8 無bom」格式(用ultra edit

編輯器),也就是說移除了bom頭三個位元組,但檔案中的中文是以三個位元組的utf-8編碼儲存的,一般的編輯器在開啟檔案時還是能將此檔案識別為utf-8編碼。但如果檔案中既不含中文字元(三位元組utf-8格式編碼的),也沒有包含bom頭標記的,用編輯器開啟檔案時就會識別為ansi碼。

問題二:

為什麼有的檔案ansi 和utf-8兩種編碼格式都能正常執行呢?有的又不行必須要utf-8,比如languages/admin裡的index.php必須要utf-8才行,不然會有亂碼在後台

答:ecshop模板 的lbi庫檔案預設是沒有包含中文字元的也沒有包含bom頭,所有字元都是以ansi編碼單位元組儲存的,所以用編輯器開啟時顯示的是ansi編碼,utf-8主程式解析時也不會有問題。

而/languages/zh_cn/admin/index.php檔案,沒有包含bom頭,如果儲存為ansi格式,將以2個位元組表示中文字元,所以,以3個位元組來識別中文的utf-8編碼主程式是無法正確解析的,自動就會出現亂碼情況。

utf-8編碼比較複雜,建議多看看相關的知識

GBK和UTF8之間的轉換

gbk和utf8之間的轉換 my study by cnangel on october 8,2012 10 10 am no comments 關於gbk和utf 8之間的轉換,很多初學者會很迷茫。一般來說gbk和utf 8是文字的編碼方式,其對應的內碼是不一樣的,所以gbk和utf 8的轉換需要...

JAVA封裝GBK檔案轉換為UTF 8

網上參考了資料,見本文末尾。感謝前輩的探索,我在他們基礎上,進行了優化調整,並且驗證測試穩定後,用在自己專案。不敢獨享,特別發布,供同行評議。gbk轉換為utf8 如下 public static boolean gbkfiletoutf8 string filepath string str2 s...

UTF 8與GBK字元之間的轉換

1.utf 8轉換為unicode編碼 utf 8編碼不能直接轉換為gbk漢字編碼,中間需要先轉換為unicode編碼,在由unicode編碼轉換為gbk漢字編碼 2.unicode編碼轉換為gbk漢字編碼 unicode漢字編碼與gbk漢字編碼的對照關係為,兩個unicode編碼對應乙個漢字,並且...