PHP MYSQL Insert Data in Arabic Language

You have to do both of the following:

  1. Make sure your database encoding and collation is utf8_general_ci (both for the field itself and the table as well as the database).
  2. 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....
}

Tags:

Mysql

Php

Arabic