Knowledge Base

How to specify the MySQL character set in PHP

This article describes how to specify the character set when you connect to a MySQL database using one of the following methods:

  • MySQL Improved (mysqli) PHP extension
  • PDO (PHP Data Objects)
This article assumes that you already know how to connect to a MySQL database using PHP. For information about how to do this, please see this article.

Determining which character sets are available on a server

To determine which character sets are available on your server for MySQL, log in to your account using SSH, and then type the following command:

grep "charset name" /usr/share/mysql/charsets/Index.xml | awk -F \" '{print $2}'

This command displays the list of available values that you can use in the methods described below.

To view additional information about a character set, such as its detailed description, open the /usr/share/mysql/charsets/Index.xml file in a text editor.

Setting the character set using the MySQL Improved extension

If you are using the MySQL Improved (mysqli) extension, use the set_charset method to specify the character set. For example, the following sample code demonstrates how to specify the Windows Arabic character set using mysqli:

$mysqli = new mysqli("localhost", "dbuser", "password", "database");

$mysqli->set_charset("cp1256");

Setting the character set using PDO (PHP Data Objects)

To specify the character set using PDO, all you have to do is include the charset setting in the connection string. For example, the following sample code demonstrates how to specify the UTF-8 Unicode character set using PDO:

$myPDO = new PDO('mysql:host=localhost;dbname=database;charset=utf8;', 'dbuser', 'password');

More Information