Database: Obey locale-specific utf8 collation settings.

Some sites prefer to use locale-specific location settings. For example, the Swedish WordPress package use `utf8_swedish_ci`, instead of `utf8_unicode_ci`. When upgrading the connection to `utf8mb4`, we were overriding this to be `utf8mb4_unicode_ci`, instead of maintaining the use of the `_swedish_ci` variant.

The locale-specific collations do have extra collation rules just for that language, so it's useful to maintain compatibility.

Fixes #32405.




git-svn-id: https://develop.svn.wordpress.org/trunk@37521 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
pento
2016-05-23 05:53:02 +00:00
parent e9bed0f3a5
commit 4422aac17c
2 changed files with 28 additions and 2 deletions

View File

@@ -955,4 +955,25 @@ class Tests_DB extends WP_UnitTestCase {
$wpdb->check_connection();
}
/**
* @ticket 32405
*/
function test_non_unicode_collations() {
global $wpdb;
if ( ! $wpdb->has_cap( 'utf8mb4' ) ) {
$this->markTestSkipped( 'This test requires utf8mb4 support' );
}
$charset = $wpdb->charset;
$collate = $wpdb->collate;
$wpdb->init_charset( 'utf8', 'utf8_swedish_ci' );
$this->assertSame( 'utf8mb4', $wpdb->charset );
$this->assertSame( 'utf8mb4_swedish_ci', $wpdb->collate );
$wpdb->init_charset( $charset, $collate );
}
}