SET NAMES utf8 in MySQL?

JasonDavis picture JasonDavis · Jan 29, 2010 · Viewed 376.3k times · Source

I often see something similar to this below in PHP scripts using MySQL

query("SET NAMES utf8");   

I have never had to do this for any project yet so I have a couple basic questions about it.

  1. Is this something that is done with PDO only?
  2. If it is not a PDO specific thing, then what is the purpose of doing it? I realize it is setting the encoding for mysql but I mean, I have never had to use it so why would I want to use it?

Answer

Vinko Vrsalovic picture Vinko Vrsalovic · Jan 29, 2010

It is needed whenever you want to send data to the server having characters that cannot be represented in pure ASCII, like 'ñ' or 'ö'.

That if the MySQL instance is not configured to expect UTF-8 encoding by default from client connections (many are, depending on your location and platform.)

Read http://www.joelonsoftware.com/articles/Unicode.html in case you aren't aware how Unicode works.

Read Whether to use "SET NAMES" to see SET NAMES alternatives and what exactly is it about.