First cut at mysql utf-8 charset suport. Props to sehh, drupal, and textpattern. fixes #3517
git-svn-id: http://svn.automattic.com/wordpress/trunk@4860 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
af10b7443f
commit
ce0f8b4a66
|
@ -1,6 +1,15 @@
|
||||||
<?php
|
<?php
|
||||||
// Here we keep the DB structure and option values
|
// Here we keep the DB structure and option values
|
||||||
|
|
||||||
|
$charset_collate = '';
|
||||||
|
|
||||||
|
if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
|
||||||
|
if ( ! empty($wpdb->charset) )
|
||||||
|
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
|
||||||
|
if ( ! empty($wpdb->collate) )
|
||||||
|
$charset_collate .= " COLLATE $wpdb->collate";
|
||||||
|
}
|
||||||
|
|
||||||
$wp_queries="CREATE TABLE $wpdb->categories (
|
$wp_queries="CREATE TABLE $wpdb->categories (
|
||||||
cat_ID bigint(20) NOT NULL auto_increment,
|
cat_ID bigint(20) NOT NULL auto_increment,
|
||||||
cat_name varchar(55) NOT NULL default '',
|
cat_name varchar(55) NOT NULL default '',
|
||||||
|
@ -13,7 +22,7 @@ $wp_queries="CREATE TABLE $wpdb->categories (
|
||||||
links_private tinyint(1) NOT NULL default '0',
|
links_private tinyint(1) NOT NULL default '0',
|
||||||
PRIMARY KEY (cat_ID),
|
PRIMARY KEY (cat_ID),
|
||||||
KEY category_nicename (category_nicename)
|
KEY category_nicename (category_nicename)
|
||||||
);
|
) $charset_collate;
|
||||||
CREATE TABLE $wpdb->comments (
|
CREATE TABLE $wpdb->comments (
|
||||||
comment_ID bigint(20) unsigned NOT NULL auto_increment,
|
comment_ID bigint(20) unsigned NOT NULL auto_increment,
|
||||||
comment_post_ID int(11) NOT NULL default '0',
|
comment_post_ID int(11) NOT NULL default '0',
|
||||||
|
@ -33,14 +42,14 @@ CREATE TABLE $wpdb->comments (
|
||||||
PRIMARY KEY (comment_ID),
|
PRIMARY KEY (comment_ID),
|
||||||
KEY comment_approved (comment_approved),
|
KEY comment_approved (comment_approved),
|
||||||
KEY comment_post_ID (comment_post_ID)
|
KEY comment_post_ID (comment_post_ID)
|
||||||
);
|
) $charset_collate;
|
||||||
CREATE TABLE $wpdb->link2cat (
|
CREATE TABLE $wpdb->link2cat (
|
||||||
rel_id bigint(20) NOT NULL auto_increment,
|
rel_id bigint(20) NOT NULL auto_increment,
|
||||||
link_id bigint(20) NOT NULL default '0',
|
link_id bigint(20) NOT NULL default '0',
|
||||||
category_id bigint(20) NOT NULL default '0',
|
category_id bigint(20) NOT NULL default '0',
|
||||||
PRIMARY KEY (rel_id),
|
PRIMARY KEY (rel_id),
|
||||||
KEY link_id (link_id,category_id)
|
KEY link_id (link_id,category_id)
|
||||||
);
|
) $charset_collate;
|
||||||
CREATE TABLE $wpdb->links (
|
CREATE TABLE $wpdb->links (
|
||||||
link_id bigint(20) NOT NULL auto_increment,
|
link_id bigint(20) NOT NULL auto_increment,
|
||||||
link_url varchar(255) NOT NULL default '',
|
link_url varchar(255) NOT NULL default '',
|
||||||
|
@ -59,7 +68,7 @@ CREATE TABLE $wpdb->links (
|
||||||
PRIMARY KEY (link_id),
|
PRIMARY KEY (link_id),
|
||||||
KEY link_category (link_category),
|
KEY link_category (link_category),
|
||||||
KEY link_visible (link_visible)
|
KEY link_visible (link_visible)
|
||||||
);
|
) $charset_collate;
|
||||||
CREATE TABLE $wpdb->options (
|
CREATE TABLE $wpdb->options (
|
||||||
option_id bigint(20) NOT NULL auto_increment,
|
option_id bigint(20) NOT NULL auto_increment,
|
||||||
blog_id int(11) NOT NULL default '0',
|
blog_id int(11) NOT NULL default '0',
|
||||||
|
@ -74,14 +83,14 @@ CREATE TABLE $wpdb->options (
|
||||||
autoload enum('yes','no') NOT NULL default 'yes',
|
autoload enum('yes','no') NOT NULL default 'yes',
|
||||||
PRIMARY KEY (option_id,blog_id,option_name),
|
PRIMARY KEY (option_id,blog_id,option_name),
|
||||||
KEY option_name (option_name)
|
KEY option_name (option_name)
|
||||||
);
|
) $charset_collate;
|
||||||
CREATE TABLE $wpdb->post2cat (
|
CREATE TABLE $wpdb->post2cat (
|
||||||
rel_id bigint(20) NOT NULL auto_increment,
|
rel_id bigint(20) NOT NULL auto_increment,
|
||||||
post_id bigint(20) NOT NULL default '0',
|
post_id bigint(20) NOT NULL default '0',
|
||||||
category_id bigint(20) NOT NULL default '0',
|
category_id bigint(20) NOT NULL default '0',
|
||||||
PRIMARY KEY (rel_id),
|
PRIMARY KEY (rel_id),
|
||||||
KEY post_id (post_id,category_id)
|
KEY post_id (post_id,category_id)
|
||||||
);
|
) $charset_collate;
|
||||||
CREATE TABLE $wpdb->postmeta (
|
CREATE TABLE $wpdb->postmeta (
|
||||||
meta_id bigint(20) NOT NULL auto_increment,
|
meta_id bigint(20) NOT NULL auto_increment,
|
||||||
post_id bigint(20) NOT NULL default '0',
|
post_id bigint(20) NOT NULL default '0',
|
||||||
|
@ -90,7 +99,7 @@ CREATE TABLE $wpdb->postmeta (
|
||||||
PRIMARY KEY (meta_id),
|
PRIMARY KEY (meta_id),
|
||||||
KEY post_id (post_id),
|
KEY post_id (post_id),
|
||||||
KEY meta_key (meta_key)
|
KEY meta_key (meta_key)
|
||||||
);
|
) $charset_collate;
|
||||||
CREATE TABLE $wpdb->posts (
|
CREATE TABLE $wpdb->posts (
|
||||||
ID bigint(20) unsigned NOT NULL auto_increment,
|
ID bigint(20) unsigned NOT NULL auto_increment,
|
||||||
post_author bigint(20) NOT NULL default '0',
|
post_author bigint(20) NOT NULL default '0',
|
||||||
|
@ -119,7 +128,7 @@ CREATE TABLE $wpdb->posts (
|
||||||
PRIMARY KEY (ID),
|
PRIMARY KEY (ID),
|
||||||
KEY post_name (post_name),
|
KEY post_name (post_name),
|
||||||
KEY type_status_date (post_type,post_status,post_date,ID)
|
KEY type_status_date (post_type,post_status,post_date,ID)
|
||||||
);
|
) $charset_collate;
|
||||||
CREATE TABLE $wpdb->users (
|
CREATE TABLE $wpdb->users (
|
||||||
ID bigint(20) unsigned NOT NULL auto_increment,
|
ID bigint(20) unsigned NOT NULL auto_increment,
|
||||||
user_login varchar(60) NOT NULL default '',
|
user_login varchar(60) NOT NULL default '',
|
||||||
|
@ -133,7 +142,7 @@ CREATE TABLE $wpdb->users (
|
||||||
display_name varchar(250) NOT NULL default '',
|
display_name varchar(250) NOT NULL default '',
|
||||||
PRIMARY KEY (ID),
|
PRIMARY KEY (ID),
|
||||||
KEY user_login_key (user_login)
|
KEY user_login_key (user_login)
|
||||||
);
|
) $charset_collate;
|
||||||
CREATE TABLE $wpdb->usermeta (
|
CREATE TABLE $wpdb->usermeta (
|
||||||
umeta_id bigint(20) NOT NULL auto_increment,
|
umeta_id bigint(20) NOT NULL auto_increment,
|
||||||
user_id bigint(20) NOT NULL default '0',
|
user_id bigint(20) NOT NULL default '0',
|
||||||
|
@ -142,7 +151,7 @@ CREATE TABLE $wpdb->usermeta (
|
||||||
PRIMARY KEY (umeta_id),
|
PRIMARY KEY (umeta_id),
|
||||||
KEY user_id (user_id),
|
KEY user_id (user_id),
|
||||||
KEY meta_key (meta_key)
|
KEY meta_key (meta_key)
|
||||||
);";
|
) $charset_collate;";
|
||||||
|
|
||||||
function populate_options() {
|
function populate_options() {
|
||||||
global $wpdb, $wp_db_version;
|
global $wpdb, $wp_db_version;
|
||||||
|
|
|
@ -4,6 +4,8 @@ define('DB_NAME', 'wordpress'); // The name of the database
|
||||||
define('DB_USER', 'username'); // Your MySQL username
|
define('DB_USER', 'username'); // Your MySQL username
|
||||||
define('DB_PASSWORD', 'password'); // ...and password
|
define('DB_PASSWORD', 'password'); // ...and password
|
||||||
define('DB_HOST', 'localhost'); // 99% chance you won't need to change this value
|
define('DB_HOST', 'localhost'); // 99% chance you won't need to change this value
|
||||||
|
define('DB_CHARSET', 'utf8');
|
||||||
|
define('DB_COLLATE', 'utf8_general_ci');
|
||||||
|
|
||||||
// You can have multiple installations in one database if you give each a unique prefix
|
// You can have multiple installations in one database if you give each a unique prefix
|
||||||
$table_prefix = 'wp_'; // Only numbers, letters, and underscores please!
|
$table_prefix = 'wp_'; // Only numbers, letters, and underscores please!
|
||||||
|
@ -18,4 +20,4 @@ define ('WPLANG', '');
|
||||||
|
|
||||||
define('ABSPATH', dirname(__FILE__).'/');
|
define('ABSPATH', dirname(__FILE__).'/');
|
||||||
require_once(ABSPATH.'wp-settings.php');
|
require_once(ABSPATH.'wp-settings.php');
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
// This holds the version number in a separate file so we can bump it without cluttering the SVN
|
// This holds the version number in a separate file so we can bump it without cluttering the SVN
|
||||||
|
|
||||||
$wp_version = '2.2-bleeding';
|
$wp_version = '2.2-bleeding';
|
||||||
$wp_db_version = 4859;
|
$wp_db_version = 4860;
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -35,6 +35,9 @@ class wpdb {
|
||||||
var $optiongroup_options;
|
var $optiongroup_options;
|
||||||
var $postmeta;
|
var $postmeta;
|
||||||
|
|
||||||
|
var $charset;
|
||||||
|
var $collate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connects to the database server and selects a database
|
* Connects to the database server and selects a database
|
||||||
* @param string $dbuser
|
* @param string $dbuser
|
||||||
|
@ -49,6 +52,12 @@ class wpdb {
|
||||||
function __construct($dbuser, $dbpassword, $dbname, $dbhost) {
|
function __construct($dbuser, $dbpassword, $dbname, $dbhost) {
|
||||||
register_shutdown_function(array(&$this, "__destruct"));
|
register_shutdown_function(array(&$this, "__destruct"));
|
||||||
|
|
||||||
|
if ( defined('DB_CHARSET') )
|
||||||
|
$this->charset = DB_CHARSET;
|
||||||
|
|
||||||
|
if ( defined('DB_COLLATE') )
|
||||||
|
$this->collate = DB_COLLATE;
|
||||||
|
|
||||||
$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);
|
$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);
|
||||||
if (!$this->dbh) {
|
if (!$this->dbh) {
|
||||||
$this->bail("
|
$this->bail("
|
||||||
|
@ -63,6 +72,9 @@ class wpdb {
|
||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( !empty($this->charset) && version_compare(mysql_get_server_info(), '4.1.0', '>=') )
|
||||||
|
$this->query("SET NAMES '$this->charset'");
|
||||||
|
|
||||||
$this->select($dbname);
|
$this->select($dbname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue