問題一:
文件已經另存爲了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編碼比較複雜,建議多看看相關的知識