首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 字符編碼轉換:iconv 與 mb_convert_encoding 詳細用法對比

     編輯:PHP 相關知識

iconv 基礎用法

<?php
// 基本轉換
$str = iconv('UTF-8', 'GBK', '中文測試'); // 返回 GBK 字節串

// 忽略無法轉換字符(推薦生產環境)
$str = iconv('UTF-8', 'GBK//IGNORE', '中文測試●特殊符號');
// 輸出: "中文測試" (●被忽略)

// 近似替換(嘗試找視覺相似字符)
$str = iconv('UTF-8', 'GBK//TRANSLIT', '中文測試●'); 
// 可能輸出: "中文測試*" 或保留原字符視具體實現

mb_convert_encoding 用法

<?php
// 需啟用 mbstring 擴展
// 單一來源編碼
$str = mb_convert_encoding('中文', 'UTF-8', 'GBK');

// 自動檢測來源編碼(按順序嘗試)
$str = mb_convert_encoding($str, 'UTF-8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS');

// 指定輸出編碼為 Big5
header('Content-Type: text/html; charset=big5');
echo mb_convert_encoding('你好', 'BIG5', 'UTF-8');

核心差異對比

特性iconvmb_convert_encoding
性能快(C 底層實現)較慢(多編碼檢測開銷)
錯誤處理//IGNORE //TRANSLIT 後綴控制默認忽略非法字符,行為不可控
多源編碼自動識別不支持支持(數組/逗號分隔列表)
依賴庫libiconv / glibcmbstring (PHP 內置)
對「-」轉 GBK Bug有(需 //IGNORE 繞過)無此問題

選型建議

  1. **明確知道來源編碼、追求性能** → iconv + //IGNORE。
  2. **來源編碼不確定(如用戶上傳文件)** → mb_convert_encoding($str, 'UTF-8', 'auto')。
  3. **現代項目** → 統一 UTF-8 全鏈路,避免轉碼;必須轉碼時優先 iconv。

常見編碼別名對照

GB2312  = GBK (GBK 是超集)
UTF-8   = UTF8
BIG5    = BIG-5
ISO-8859-1 = LATIN1
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved