在處理多語言文本或需要確保字符編碼一致性的PHP 項目中, mbstring擴展扮演了關鍵角色。而其中的mb_get_info()函數,是一個非常實用的工具,它能讓你快速查看當前mbstring的配置信息,為排查字符編碼問題提供重要參考。
mb_get_info()是PHP 中mbstring擴展提供的一個函數,用於獲取當前多字節字符串環境的配置信息。
mb_get_info(string $type = null): array|string|false
$type :可選參數,指定要獲取的信息類型。如果為空,則返回所有信息(以關聯數組形式返回)。
返回值:當指定$type時,返回一個字符串;如果未指定,返回關聯數組。
print_r(mb_get_info());
輸出類似如下內容:
Array
(
[internal_encoding] => UTF-8
[http_input] => pass
[http_output] => pass
[input_encoding] => UTF-8
[output_encoding] => UTF-8
[language] => neutral
[encoding_translation] => Off
)
這表示當前腳本中,PHP 使用的字符編碼為UTF-8。
雖然mb_get_info()本身不會直接讀取文件的編碼,但我們可以將它與其他函數(如mb_detect_encoding() )結合使用,來處理文本文件的編碼判斷與轉換。
$content = file_get_contents('sample.txt');
$encoding = mb_detect_encoding($content, mb_list_encodings(), true);
echo "原始編碼:$encoding\n";
if ($encoding !== 'UTF-8') {
$content = mb_convert_encoding($content, 'UTF-8', $encoding);
file_put_contents('sample_utf8.txt', $content);
echo "已轉換為 UTF-8 並保存到新文件。\n";
}
print_r(mb_get_info());
當你在處理多語言網站(如https://gitbox.net/blog.php )的用戶評論或文章內容時,可能會收到不同編碼的輸入數據。通過mb_get_info()和mb_detect_encoding() ,你可以確保統一編碼,避免亂碼。
假設你從外部API(如https://api.gitbox.net/v1/data )獲取數據,為了保證在頁面中正常顯示,你需要先檢測編碼,再轉換。