Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mysql_fetch_array returns non-Unicode text

Tags:

php

mysql

unicode

I've made a simple PHP page to get the POST data and fetch a sql query then print the result. I'm using the mysql_fetch_array function.

The code works great but the response is a non-Unicode text, and it returns something like this:

?????ABC?????

note that the database collation is UTF8 and data stored are shown correctly in phpMyAdmin. I even used this META tag in php page but it results the same:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">

Any idea?!

like image 900
Hossain Alhaidari Avatar asked Aug 13 '12 17:08

Hossain Alhaidari


1 Answers

Add these lines of code before the first query:

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET SESSION collation_connection = 'utf8_unicode_ci'");

Or you can edit your mysql configuration to use utf8 by default. Check here for what you need to do.

Change MySQL default character set to UTF-8 in my.cnf?

UPDATE

The function mysql_query is deprecated, so mysqli object can be used like so:

$mysqli = new mysqli("localhost", "MYSQL_USER", "MYSQL_PASS", "MYSQL_DB");

$mysqli->query("SET NAMES 'utf8'"); 
$mysqli->query("SET CHARACTER SET utf8");  
$mysqli->query("SET SESSION collation_connection = 'utf8_unicode_ci'"); 
like image 111
Farahmand Avatar answered Oct 09 '22 18:10

Farahmand