PHP MYSQL Insert Data in Arabic Language
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;");
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.
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....
}