2024 日本 PHP 研討會

HTTP 輸入與輸出

HTTP 輸入/輸出字元編碼轉換也可能會轉換二進位資料。如果 HTTP 輸入/輸出使用二進位資料,使用者應該控制字元編碼轉換。

注意:

如果 HTML 表單的 enctype 設定為 multipart/form-dataphp.ini 中的 mbstring.encoding_translation 設定為開啟,則 POST 的變數和上傳檔案的名稱也會被轉換為內部字元編碼。但是,轉換不會套用至查詢鍵值。

  • HTTP 輸入

    無法透過 PHP 指令碼控制 HTTP 輸入字元轉換。要停用 HTTP 輸入字元轉換,必須在 php.ini 中設定。

    範例 #1 在 php.ini 中停用 HTTP 輸入轉換

    ;; Disable HTTP Input conversion
    mbstring.http_input = pass
    ;; Disable HTTP Input conversion
    mbstring.encoding_translation = Off

    當 PHP 作為 Apache 模組使用時,可以在 httpd.conf 中的每個虛擬主機指令中覆寫這些設定,或者使用 .htaccess 針對每個目錄進行覆寫。詳細資訊請參閱設定章節和 Apache 手冊。

  • HTTP 輸出

    有幾種方法可以啟用輸出字元編碼轉換。一種是使用 php.ini,另一種是使用 ob_start() 並以 mb_output_handler() 作為 ob_start 的回呼函式。

範例 #2 php.ini 設定範例

;; Enable output character encoding conversion for all PHP pages

;; Enable Output Buffering
output_buffering    = On

;; Set mb_output_handler to enable output conversion
output_handler      = mb_output_handler

範例 #3 指令碼範例

<?php

// 僅針對此頁面啟用輸出字元編碼轉換

// 將 HTTP 輸出字元編碼設定為 SJIS
mb_http_output('SJIS');

// 開始緩衝並指定 "mb_output_handler" 作為
// 回呼函式
ob_start('mb_output_handler');

?>

新增註記

使用者貢獻的註記

此頁面沒有使用者貢獻的註記。
To Top