該**編輯字符集為「utf-8」,與html檔案的頭資訊meta設定charset相同,與php7 + apache24站點設定預設的charset相同。使用ie10+/chrome77+從本地磁碟開啟檔案結果顯示正常,但是以站點訪問瀏覽網頁的方式開啟該html檔案卻出現亂碼問題:除了英文本元,皆是無法直接閱讀的亂碼。
仔細檢查操作**,該**將檔案內容直接以raw string的形式通過file.write(arg0)寫入儲存。編輯器、網頁meta字符集charset和**伺服器server設定反覆確認一致,甚至輸出到dos命令視窗顯示正常,目標網頁結果都是以上描述的亂碼。
這是乙個似乎沒有答案的謎題。
乙個用作顯示的檔案,一般情況下,涉及的操作只有:讀取和寫入。讀取操作的話,關聯的是**和網頁的配置/設定/configuration的問題;而寫入操作有關的是檔案寫入方式和檔案格式。配置沒有問題,那就似乎和讀取沒有關係。剩下的就是寫入操作的問題。該操作**使用html模板,複製時編輯器字符集charset為utf-8,蒐集內容字元編碼不指定。假設模板格式正確,問題出現在蒐集的文字上,推導結果應該是:模板固定的內容顯示正確,搜尋新增的文字顯示為亂碼。實際結果是:所有的文字均顯現亂碼。所以內容格式沒有問題。
那麼問題只能是與操作**的file.write(arg0)有關。
我們知道,檔案寫入操作的方式有兩種:1)raw string ;2)binary code。raw string一般指可讀的原始字串,不進行轉換格式的。binary code是指轉換的不可讀二進位制字串。
在反覆測試中,確定第一種寫入方式存在問題。嘗試修改寫入方式為binary code二進位制**,結果顯示正常。問題已解決。
總結:2)寫入和讀取一致:寫入前的資料和讀取時的資料內容和格式一致。
這裡有個問題:為何raw string和binary code兩種方式寫入的文字顯示結果不一樣?
網頁亂碼問題
顯然,只有傳送端和接收端指代的是同樣的內容,我們才能得到正確的結果。那麼,對於一次搜尋請求中關鍵字的提交,我們有3種方式,簡稱發1,發2,發3 發1 表單post提交 發2 表單get提交 發3 將搜尋項直接內含在url裡,如春節 先來討論發1和發2情況。在阮一峰的這篇文章中,我們看到,對於get和...
你的php網頁亂碼了嗎
一 學習php的童鞋在編寫網頁的時候,要是設計到中文內容的儲存的時候,大多會出現乙個問題就是亂碼。一般亂碼的話,我們可以檢查三個方面 1 網頁編碼是否正確,比如是否在頭部那裡加入原標籤 1 metacharset utf 8 2 檢查mysql資料庫儲存時預設使用的字符集 3 檢查網頁檔案的編碼,是...
php讀mysql關於亂碼問題的總結
php讀mysql時,有以下幾個地方涉及到了字符集。1.建立資料庫表時指定資料庫表的字符集。例如 create table tablename id int not null auto increment,title varchar 20 not null,primary key id defaul...