views:

83

answers:

4

The infinity () symbol gets converted to ∞ when it is inserted into my MySQL table by a PHP script, but if I insert it directly from phpMyAdmin, it inserts correctly. The symbol is passed to the PHP script by a GET call with the JavaScript function encodeURIComponent() around the contents. The field in the MySQL database is utf8_swedish_cl. How do I get to insert as into the database?

A: 

Are you setting SET NAMES utf8 before inserting the content into the database?

meder
That does work to insert it correctly, though it still displays incorrectly. I'm going to use Alix Axel's answer from the link to get everything UTF-8 all the way through.
James Simpson
what did you do specifically to solve your issue?
meder
+2  A: 

Check this real good SO answer: UTF-8 all the way through…

Alix Axel
A: 

Don't forget the "query" SET CHARACTER SET utf8 at the beginning of your scripts.

zneak
A: 

Are you sure that phpMyAdmin is doing it right? ∞ Looks a lot like a UTF8 character stored in a latin-1 column.

What do you get when you do this select hex(column_name) from the_table?

  • If it's E2889E, then your connection is UTF8, your column may not be.

  • If it's C3AC, then your connection is latin-1 and your column is utf8.

  • If it's EC, then both your connection and column are latin-1

Here's a quick way to verify that the column's encoding is UTF8:

select 
    column_name, character_set_name, collation_name 
from 
    information_schema.columns
where
    table_name = '_your table_'
Seth
It gave me E2889E.
James Simpson