wpdb::determine_charset() WordPress Method
The wpdb::determine_charset() method is used to set the character set for the WordPress database. By default, this is set to latin1.
wpdb::determine_charset( string $charset, string $collate ) #
Determines the best charset and collation to use given a charset and collation.
Description
For example, when able, utf8mb4 should be used instead of utf8.
Parameters
- $charset
(string)(Required)The character set to check.
- $collate
(string)(Required)The collation to check.
Return
(array) The most appropriate character set and collation to use.
- 'charset'
(string) Character set. - 'collate'
(string) Collation.
Source
File: wp-includes/wp-db.php
public function determine_charset( $charset, $collate ) { if ( ( $this->use_mysqli && ! ( $this->dbh instanceof mysqli ) ) || empty( $this->dbh ) ) { return compact( 'charset', 'collate' ); } if ( 'utf8' === $charset && $this->has_cap( 'utf8mb4' ) ) { $charset = 'utf8mb4'; } if ( 'utf8mb4' === $charset && ! $this->has_cap( 'utf8mb4' ) ) { $charset = 'utf8'; $collate = str_replace( 'utf8mb4_', 'utf8_', $collate ); } if ( 'utf8mb4' === $charset ) { // _general_ is outdated, so we can upgrade it to _unicode_, instead. if ( ! $collate || 'utf8_general_ci' === $collate ) { $collate = 'utf8mb4_unicode_ci'; } else { $collate = str_replace( 'utf8_', 'utf8mb4_', $collate ); } } // _unicode_520_ is a better collation, we should use that when it's available. if ( $this->has_cap( 'utf8mb4_520' ) && 'utf8mb4_unicode_ci' === $collate ) { $collate = 'utf8mb4_unicode_520_ci'; } return compact( 'charset', 'collate' ); }
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
4.6.0 | Introduced. |