Charset Changing

From The Uniform Server Wiki
Revision as of 21:21, 16 November 2005 by 195.47.50.165 (talk)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

If you need another character set in your dynamics application then the Uniserver default one (ISO-8859-1 i.e. latin1) is, it is necessary to make approprite changes in Apache, MySQL an PHP code. I will demonstrate changes on the example where cp1250 is the final result.

1. Apache In the file local\Apache2\conf\httpd.conf find the statement AddDefaultCharset iso-8859-1 and change it to AddCharset WINDOWS-1250 .cp-1250 .win-1250 save changes Note: see ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets for the official list of charset names and their respective RFCs


2. MySQL In the file \user\local\mysql\bin\my_small.cnf find line

  1. Uncomment the following if you are NOT using BDB tables

and BEFORE this line insert the two following lines. save changes

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 know all databases will be corectly set to cp1250 and your dynamics data are presented in the new character set. Note: should there are old application databases they are not automatically rcoded into the new char set. You should do it "manually" prefarably via phpMyAdmin.

But it does not generally mean that your application sends correctly formatted data into the database!!! And if they are not correctly sent they can't be later correctly presented in your browser. So you have to adjust PHP application now!

4. PHP You have to find php definition file. That is the file where global interraction with MySQL is set. Look for the name like definition.php or so... In an "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");