Sunday, 19 March 2017

How can I store the '€' symbol in MySQL using PHP?




I've set the PHP character set to utf-8:




header('Content-Type: text/html; charset=utf-8');


I've set the currency column in MySQL to varchar(1) with collation utf8_unicode_ci.



However, the following code in PHP:



$currency = '€';
$sql = "UPDATE myTable SET currency = '$currency' WHERE user = '$user'";
mysql_query($sql);



Produces the following character in MySQL:



â


How can I get the symbol to store properly in MySQL?


Answer



Make sure your script file, the file that contains the line




$currency = '€';


is encoded UTF-8. You should have an option to that effect in your editor's or IDE's "Save as" dialog.



Then make sure your connection is UTF-8 encoded as well - it is ISO-8859-1 by default.



After connecting to the database, for mySQL before 5.0.7:




mysql_query("SET NAMES utf8");


For mySQL 5.0.7 and newer:



mysql_set_charset("utf8");

No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...