Changeset 37601 for trunk/src/wp-includes/wp-db.php
- Timestamp:
- 06/01/2016 02:37:20 AM (10 years ago)
- File:
-
- 1 edited
-
trunk/src/wp-includes/wp-db.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/wp-db.php
r37585 r37601 736 736 public function init_charset() { 737 737 if ( function_exists('is_multisite') && is_multisite() ) { 738 $ this->charset = 'utf8';738 $charset = 'utf8'; 739 739 if ( defined( 'DB_COLLATE' ) && DB_COLLATE ) { 740 $ this->collate = DB_COLLATE;740 $collate = DB_COLLATE; 741 741 } else { 742 $ this->collate = 'utf8_general_ci';742 $collate = 'utf8_general_ci'; 743 743 } 744 744 } elseif ( defined( 'DB_COLLATE' ) ) { 745 $ this->collate = DB_COLLATE;745 $collate = DB_COLLATE; 746 746 } 747 747 748 748 if ( defined( 'DB_CHARSET' ) ) { 749 $this->charset = DB_CHARSET; 750 } 751 749 $charset = DB_CHARSET; 750 } 751 752 $charset_collate = $this->determine_charset( $charset, $collate ); 753 754 $this->charset = $charset_collate['charset']; 755 $this->collate = $charset_collate['collate']; 756 } 757 758 /** 759 * Given a charset and collation, determine the best charset and collation to use. 760 * 761 * For example, when able, utf8mb4 should be used instead of utf8. 762 * 763 * @since 4.6.0 764 * 765 * @param string $charset The character set to check. 766 * @param string $collate The collation to check. 767 * 768 * @return array The most appropriate character set and collation to use. 769 */ 770 public function determine_charset( $charset, $collate ) { 752 771 if ( ( $this->use_mysqli && ! ( $this->dbh instanceof mysqli ) ) || empty( $this->dbh ) ) { 753 return ;754 } 755 756 if ( 'utf8' === $ this->charset && $this->has_cap( 'utf8mb4' ) ) {757 $ this->charset = 'utf8mb4';758 } 759 760 if ( 'utf8mb4' === $ this->charset ) {772 return compact( 'charset', 'collate' ); 773 } 774 775 if ( 'utf8' === $charset && $this->has_cap( 'utf8mb4' ) ) { 776 $charset = 'utf8mb4'; 777 } 778 779 if ( 'utf8mb4' === $charset ) { 761 780 // _general_ is outdated, so we can upgrade it to _unicode_, instead. 762 if ( ! $ this->collate || 'utf8_general_ci' === $this->collate ) {763 $ this->collate = 'utf8mb4_unicode_ci';781 if ( ! $collate || 'utf8_general_ci' === $collate ) { 782 $collate = 'utf8mb4_unicode_ci'; 764 783 } else { 765 $ this->collate = str_replace( 'utf8_', 'utf8mb4_', $this->collate );784 $collate = str_replace( 'utf8_', 'utf8mb4_', $collate ); 766 785 } 767 786 } 768 787 769 788 // _unicode_520_ is a better collation, we should use that when it's available. 770 if ( $this->has_cap( 'utf8mb4_520' ) && 'utf8mb4_unicode_ci' === $this->collate ) { 771 $this->collate = 'utf8mb4_unicode_520_ci'; 772 } 789 if ( $this->has_cap( 'utf8mb4_520' ) && 'utf8mb4_unicode_ci' === $collate ) { 790 $collate = 'utf8mb4_unicode_520_ci'; 791 } 792 793 return compact( 'charset', 'collate' ); 773 794 } 774 795
Note: See TracChangeset
for help on using the changeset viewer.