PHP開發因BOM產生的亂碼問題

2021-07-23 02:15:42 字數 586 閱讀 9980

$bom = pack("c3",239,187,191);   //bom: xefxbbxbf

$strcsv =$bom.$strcsv;

以下是摘自網際網路上比較精煉的解釋:

bom的說明:在ucs 編碼中有乙個叫做」zero width no-break space」的字元,它的編碼是feff。而feff在ucs中是不存在的字元,所以不應該出現在實際傳輸中。ucs規範建議我們在傳輸位元組流前,先傳輸字元」zero width no-break space」。這樣如果接收者收到feff,就表明這個位元組流是big-endian的;如果收到fffe,就表明這個位元組流是little- endian的。因此字元」zero width no-break space」又被稱作bom。

utf-8不需要bom來表明位元組順序,但可以用bom來表明編碼方式。字元」zero width no-break space」的utf-8編碼是ef bb bf。所以如果接收者收到以ef bb bf開頭的位元組流,就知道這是utf-8編碼了。windows就是使用bom來標記文字檔案的編碼方式的。

php在設計時就沒有考慮bom的問題,也就是說他不會忽略utf-8編碼的檔案開頭bom的那三個字元。

PHP 解決rtrim產生亂碼的問題

item 3 魔力之源 300 10鑽石 300000 金幣 var dump rtrim item string 3 魔力之源 300 10鑽石 300000 金 length 47 rtrim函式把引數都轉成了utf8後再進行比較。對於中文,一般都是先轉成unicode,再根據下表轉成utf8。...

PHP 解決PHP和MySQL的中文亂碼問題

php連線資料庫的時候經常會出現中文亂碼,一般只需要檢查編碼是否統一就可以解決亂碼問題。1.資料庫的字元編碼 可以將將所有編碼設定為utf 8。這樣在資料庫中就能正常顯示中文了,phpadmin預設的就是utf 8編碼。2.頁面檔案的字元編碼 在編輯器中右擊,選擇編碼方式也為utf8即可。3.php...

PHP開發中的亂碼問題

1 解決頁面中的亂碼問題 兩種方法 1 使用meta標籤設定頁面編碼 meta標籤的作用是宣告客戶端的瀏覽器用什麼字符集編碼顯示該頁面,其中charset可以設定為gb2312 gbk utf 8等。大部分的頁面都是通過這種方式來告訴瀏覽器顯示這個頁面時採用什麼編碼。2 通過header 函式設定頁...