PHP MYSQL Insert Data in Arabic Language
Solution 1
You have to do both of the following:
- Make sure your database encoding and collation is
utf8_general_ci
(both for the field itself and the table as well as the database). -
Send two commands right after establishing a connection to the database:
mysql_query("SET NAMES utf8;"); mysql_query("SET CHARACTER_SET utf8;");
Solution 2
You aren't mentioning the MySQL version that you are using, but if using 5.0.7 or later, as per the official PHP documentation:
This is the preferred way to change the charset. Using mysql_query() to set it (such as SET NAMES utf8) is not recommended. See the MySQL character set concepts section for more information.
e.g., Assuming that you are using the mysql_query extension.
<?php
$link = mysql_connect('localhost','user1','pass1',TRUE);
mysql_selectdb('db1', $link);
mysql_set_charset('utf8',$link);
?>
Other considerations:
- The files being used should be encoded with UTF-8
- The database, table and field should all be encoded and using the collation
utf8_general_ci
- The PHP headers and HTML headers should also be set to UTF-8
As a side note, The use of mysql_query extension is discouraged. Instead, the MySQLi or PDO_MySQL extension should be used.
See also MySQL: choosing an API guide and related FAQ for more information.
Solution 3
You should use this line:
@mysql_query("SET NAMES 'utf8' ");
See this function:
function _connect($user, $pass, $host)
{
$conn = mysql_connect($host, $user, $pass);
if (!$conn)
return false;
@mysql_query("SET NAMES 'utf8' ");
//more....
}
h_h
Updated on June 16, 2022Comments
-
h_h about 2 years
I am trying to insert some Arabic Language data into MySQL using PHP and an HTML form. When I insert the data in to MYSQL table, the table field represents data as
مرØبا العالم
.But when I access the same data with PHP and show it in my webpage, it shows the correct data. I am using:
http-equiv="Content-Type" content="text/html; charset=utf-8"
meta
tag in my web page to show Arabic data. My question is why my data looks like this:مرØبا العالم
in MySQL table, and how should I correct it.