Question

Why when I'm reading a cyrillic text from database it's ok , but when I put this text in select-option menu I get strange symbols

http://prikachi.com/images/813/6589813g.jpg http://prikachi.com/images/811/6589811I.jpg

I think that I put everywhere to be utf-8 but I don't know ...

in my html I use :

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Was it helpful?

Solution

most likely you're not using the same charset (utf-8) everywhere so your data gets messed up at some point. depending on what exactly you're doing, you'll have to change/add one or more of the following points (maybe it's the SET CHARSET/mysql_set_charset you forgot):

  • tell MySQL to use utf-8. to do this, add this to your my.cnf:

    collation_server = utf8_unicode_ci
    character_set_server = utf8
    
  • before interacting with mysql, send this two querys:

    SET NAMES 'utf8';
    CHARSET 'utf8';
    

    or, alternatively, let php do this after opening the connection:

    mysql_set_charset('utf8', $conn); // when using the mysql_-functions
    mysqli::set_charset('utf8') // when using mysqli
    
  • set UTF-8 as the default charset for your database

    CREATE DATABASE `my_db` DEFAULT CHARACTER SET 'utf8';
    
  • do the same for tables:

    CREATE TABLE `my_table` (
      -- ...
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
  • assuming the client is a browser, serve your content as utf-8 and the the correct header:

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

    to be really sure the browser understands, add a meta-tag:

    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    
  • and, last but not least, tell the browser to submit forms using utf-8

    <form accept-charset="utf-8" ...>
    
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top