PHP: mb_detect_order - Manual (original) (raw)
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_detect_order — Set/Get character encoding detection order
Description
Parameters
encoding
encoding is an array or comma separated list of character encoding. See supported encodings.
If encoding is omitted or [null](reserved.constants.php#constant.null), it returns the current character encoding detection order as array.
This setting affects mb_detect_encoding() andmb_send_mail().
mbstring currently implements the following encoding detection filters. If there is an invalid byte sequence for the following encodings, encoding detection will fail.
UTF-8, UTF-7,ASCII,EUC-JP,SJIS,eucJP-win, SJIS-win,JIS, ISO-2022-JP
For ISO-8859-*, mbstring always detects as ISO-8859-*.
For UTF-16, UTF-32,UCS2 and UCS4, encoding detection will fail always.
Return Values
When setting the encoding detection order, [true](reserved.constants.php#constant.true) is returned on success or [false](reserved.constants.php#constant.false) on failure.
When getting the encoding detection order, an ordered array of the encodings is returned.
Changelog
| Version | Description |
|---|---|
| 8.0.0 | encoding is nullable now. |
Examples
Example #1 mb_detect_order() examples
<?php /* Set detection order by enumerated list */ mb_detect_order("eucjp-win,sjis-win,UTF-8");/* Set detection order by array */ $ary[] = "ASCII"; $ary[] = "JIS"; $ary[] = "EUC-JP"; mb_detect_order($ary);/* Display current detection order */ echo implode(", ", mb_detect_order()); ?>
Example #2 Example showing useless detect orders
; 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
See Also
- mb_internal_encoding() - Set/Get internal character encoding
- mb_http_input() - Detect HTTP input character encoding
- mb_http_output() - Set/Get HTTP output character encoding
- mb_send_mail() - Send encoded mail
Found A Problem?
1 year ago
Perhaps obvious to most everyone, but the
default filter list was shorter than I expected:
['ASCII','UTF-8'], in that order.
c. 2024, 60% of websites globally declared charset 'UTF-8'
So if you're experimenting with multibyte encodings other than UTF-8, you have to specify your detect_order, choosing from the list of implemented filters.