PHP Conference Japan 2024

mb_internal_encoding

(PHP 4 >= 4.0.6,PHP 5,PHP 7,PHP 8)

mb_internal_encoding設定/取得內部字元編碼

描述

mb_internal_encoding(?string $encoding = null): string|bool

設定/取得內部字元編碼

參數

encoding

encoding 是用於 HTTP 輸入字元編碼轉換、HTTP 輸出字元編碼轉換以及 mbstring 模組定義的字串函式的預設字元編碼名稱。您應該注意,內部編碼與多位元組正規表示式的編碼完全不同。

傳回值

如果設定了 encoding,則成功時傳回 true,失敗時傳回 false。在這種情況下,多位元組正規表示式的字元編碼不會變更。如果省略 encoding,則會傳回目前的字元編碼名稱。

錯誤/例外

從 PHP 8.0.0 開始,如果 encoding 的值是無效的編碼,則會拋出 ValueError。在 PHP 8.0.0 之前,會發出 E_WARNING

更新日誌

版本 描述
8.0.0 encoding 現在可為空值。
8.0.0 如果 encoding 是無效的編碼,現在會拋出 ValueError。先前會發出 E_WARNING

範例

範例 #1 mb_internal_encoding() 範例

<?php
/* 設定內部字元編碼為 UTF-8 */
mb_internal_encoding("UTF-8");

/* 顯示目前的內部字元編碼 */
echo mb_internal_encoding();
?>

參見

新增筆記

使用者貢獻的筆記 5 則筆記

Joachim Kruyswijk
18 年前
特別是在編寫用於不同伺服器上的 PHP 指令碼時,最好在每個服務文件的頂部明確設定內部編碼,例如:

mb_internal_encoding("UTF-8");

這與 mysql 語句 "SET NAMES 'utf8'" 結合使用,將能省下很多除錯的麻煩。

此外,請使用多位元組字串函式,而不是您可能習慣使用的函式,例如 mb_strlen() 而不是 strlen() 等。
webfav at web dot de
9 年前
全部一起

<?php
// ------------------------------------------------------------

header('Content-Type: text/html; charset=UTF-8');

mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_regex_encoding('UTF-8');

// ------------------------------------------------------------
?>
mortoray at ecircle-ag dot com
19 年前
請注意,來源檔案中的字串必須與您透過 mb_internal_encoding 指定的編碼相符。解析器似乎會從檔案載入原始位元組,並參考其內部編碼來判斷其實際編碼。

為了示範,當 /source/ 檔案是以 Latin-1 編碼時,以下輸出如預期:

<?php
mb_internal_encoding
("iso-8859-1");
mb_http_output( "UTF-8" );
ob_start("mb_output_handler");

echo
"???<br/>";

?>???

現在,mb_internal_encoding 的典型用法如下所示。將變更設定為 "utf-8",但保持 /source/ 檔案編碼不變:

<?php
mb_internal_encoding
("UTF-8");
mb_http_output( "UTF-8" );
ob_start("mb_output_handler");

echo
"???<br/>";

?>???

輸出只會顯示 <br/> 標籤,沒有文字。

將檔案另存為 UTF-8 編碼,然後結果就會如預期。
Anonymous
9 年前
請注意,在 PHP 5.6 中不需要 mb_internal_encoding。
mdirks at gulfstreamcoach dot com
17 年前
回覆 mortoray at ecircle-ag dot com

只要您將編碼設定為更相容 "Latin 1" 的編碼(例如 US-ACSII、ISO-8859-1、ISO-8859-1 或 Windows 1252),字元就會正常顯示。PHP.net 會自動偵測為 UTF-8
To Top