Charset Changing: Difference between revisions

From The Uniform Server Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 7: Line 7:


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

Revision as of 16:04, 29 November 2005

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

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

collation-server = cp1250_general_ci

  1. 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");