Charset Changing

Revision as of 15:50, 29 November 2005 by MrX (talk | contribs) (Fixed the "??" and some Paths)

This wiki article will help you change your Character Set to something else other than the default Uniform Server setting (ISO-8859-1 / latin1).

In this article, our goal is to set the charset to cp1250

Apache

  1. Find this statement in the Apache configuration file (W:/usr/local/apache2/conf/httpd.conf)
    AddDefaultCharset iso-8859-1
    and change it to:
    AddCharset WINDOWS-1250 .cp-1250 .win-1250
    Note: See ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets for the official list of charset names and their respective RFCs.

MySQL

  1. In the file (W:/usr/local/mysql/bin/my_small.cnf) find line:
    Uncomment the following if you are NOT using BDB tables
  2. Insert the two following lines, before the line above:
    character-set-server = cp1250<br />collation-server = cp1250_general_ci
  3. Restart Apache and MySQL and verify that system variables looks like this:
    character set client latin1 cp1250

character set connection cp1250 cp1250 character set database cp1250 cp1250 character set results latin1 cp1250 character set server cp1250 cp1250 character set system utf8 utf8 collation connection cp1250_czech_cs cp1250_general_ci collation database cp1250_general_ci cp1250_general_ci collation server cp1250_general_ci cp1250_general_ci


The lines where latin1 set remains is of no interest for us just now. From now all databases will be correctly set to cp1250 and your dynamic data will be presented in the new character set.

Note 1: There might be old application databases that are not automatically recorded into the new charset. You should do it "manually" prefarably via phpMyAdmin.

Note 2: This does not generally mean that your application will send correctly formatted data into the database! If they are not sent correctly, they can later be presented correctly in your browser so you have to adjust the PHP application now!

PHP

If you have a PHP definition or configuration file, the file where global interraction with MySQL is set, (look for a filename like: definition.php, cofig.php, etc.) in the "appropriate" place (you have to find the place yourself,) insert two lines of code:

mysql_query("SET character_set_connection=cp1250");
mysql_query("SET character_set_client=cp1250");