2013年10月14日 星期一

從PHP到MySQL,再從MySQL回到PHP的這個過程,字串編碼發生了什麼事?

1. 重要觀念:
(1) 字串本質上就只是一堆二進位資料。字串要配合字元編碼使用,才有意義。
(2) 如何從A編碼轉換至B編碼:到A的表格查表,再到B的表格查表

2.
PHP讀取MySQL的整個過程,編碼發生了什麼事:
(1) PHP送出字串到MySQL server。MySQL server會認為接收到的字串,其編碼為character_set_client system variable
(2) MySQL server會將該字串的編碼由character_set_client轉換至character_set_connection編碼
(3) 執行讀取
(4) 將讀取的結果由column的編碼轉換為character_set_results編碼,然後送回給PHP

3.
PHP插入資料到MySQL的整個過程,編碼發生了什麼事:
(1) PHP送出字串到MySQL server。MySQL server會認為接收到的字串,其編碼為character_set_client system variable
(2) MySQL server會將該字串的編碼由character_set_client轉換至character_set_connection編碼
(3) 將字串的編碼由character_set_connection轉換至column的編碼
(4) 寫入字串到欄位裡


總結:
讀:character_set_client -> character_set_connection -> 讀取結果 -> column -> character_set_results
寫:character_set_client -> character_set_connection -> column -> 寫入字串

沒有留言:

張貼留言