Categories
WordPress

How to change database charset in WordPress wpdb

Sometime you would get database query results from wpdb with get_results in ????????.

global $wpdb;

$results = $wpdb->get_results("SELECT * FROM tables");
header('Content-Type: application/json;charset=utf-8');
echo wp_json_encode($results);

Although, the encodings of the database, table and the column are all set to utf8, that would not help!

I’ve found a simple solution by setting wpdb character encoding before get_results.

global $wpdb;
$wpdb->set_charset($wpdb->dbh, 'utf8');  // add this line

....

$results = $wpdb->get_results("SELECT * FROM tables");
header('Content-Type: application/json;charset=utf-8');
echo wp_json_encode($results);

I hope this help.

Ref. https://wordpress.stackexchange.com/questions/301822/how-do-i-change-database-charset-when-using-wpdb