也许对大多数人来说很明显,但
默认过滤器列表比我预期的要短
['ASCII','UTF-8'],按此顺序。
c. 2024,全球 60% 的网站声明字符集为 'UTF-8'
因此,如果您正在尝试使用除 UTF-8 之外的多字节编码,则必须指定您的 detect_order,从已实现的过滤器列表中进行选择。
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_detect_order — 设置/获取字符编码检测顺序
encoding
encoding
是一个 array 或者用逗号分隔的字符编码列表。请查看 支持的编码。
如果 encoding
被省略或为 null
,则返回当前字符编码检测顺序的数组。
此设置会影响 mb_detect_encoding() 和 mb_send_mail()。
mbstring
目前实现以下编码检测过滤器。如果存在以下编码的无效字节序列,则编码检测将失败。
UTF-8
, UTF-7
, ASCII
, EUC-JP
,SJIS
, eucJP-win
, SJIS-win
, JIS
, ISO-2022-JP
对于 ISO-8859-*
,mbstring
始终检测为 ISO-8859-*
。
对于 UTF-16
, UTF-32
, UCS2
和 UCS4
,编码检测将始终失败。
版本 | 描述 |
---|---|
8.0.0 |
encoding 现在可以为空。 |
示例 #1 mb_detect_order() 示例
<?php
/* 通过枚举列表设置检测顺序 */
mb_detect_order("eucjp-win,sjis-win,UTF-8");
/* 通过数组设置检测顺序 */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
mb_detect_order($ary);
/* 显示当前检测顺序 */
echo implode(", ", mb_detect_order());
?>
示例 #2 展示无用检测顺序的示例
; Always detect as ISO-8859-1 detect_order = ISO-8859-1, UTF-8 ; Always detect as UTF-8, since ASCII/UTF-7 values are ; valid for UTF-8 detect_order = UTF-8, ASCII, UTF-7