doc/configure_unicode_support.txt

Code
Comments
Other
Rev Date Author Line
848 30 Jun 05 nicklas 1
848 30 Jun 05 nicklas 2 How to configure MySQL and Tomcat to support unicode
848 30 Jun 05 nicklas 3 ====================================================
848 30 Jun 05 nicklas 4
848 30 Jun 05 nicklas 5 The BASE core and web client supports unicode, but to take
848 30 Jun 05 nicklas 6 advantage of that the database and the servlet container must
848 30 Jun 05 nicklas 7 also be correctly configured. This document describes how to configure
848 30 Jun 05 nicklas 8 MySQL and Tomcat to fully support unicode using the UTF-8 character
848 30 Jun 05 nicklas 9 encoding. The configuration should be done BEFORE installing and
848 30 Jun 05 nicklas 10 building the database.
848 30 Jun 05 nicklas 11
848 30 Jun 05 nicklas 12
848 30 Jun 05 nicklas 13 MySQL
848 30 Jun 05 nicklas 14 -----
848 30 Jun 05 nicklas 15 There are two steps that must be done BEFORE the BASE
848 30 Jun 05 nicklas 16 server is installed:
848 30 Jun 05 nicklas 17
848 30 Jun 05 nicklas 18 1. Make sure the database tables can handle UTF-8 data.
848 30 Jun 05 nicklas 19    This easiest done when you create the database by adding 
848 30 Jun 05 nicklas 20    a default character encoding to the CREATE DATABASE statment,
848 30 Jun 05 nicklas 21    for example:
848 30 Jun 05 nicklas 22
848 30 Jun 05 nicklas 23    CREATE DATABASE base2 DEFAULT CHARACTER SET utf8;
848 30 Jun 05 nicklas 24
848 30 Jun 05 nicklas 25 2. Make sure the JDBC connection uses UTF-8 as the character set 
848 30 Jun 05 nicklas 26    to communicate with the database. This is done by specifying it
848 30 Jun 05 nicklas 27    in the db.url property in the base.config file:
848 30 Jun 05 nicklas 28    
2940 21 Nov 06 nicklas 29    db.url = jdbc:mysql://127.0.0.1/base2?characterEncoding=UTF-8
848 30 Jun 05 nicklas 30
2940 21 Nov 06 nicklas 31 Note that in the SQL statement you should use 'utf8' but in the
2940 21 Nov 06 nicklas 32 connection string you should use 'UTF-8'. If 'UTF-8' doesn't work
2940 21 Nov 06 nicklas 33 in the connection string you may try using 'utf8' there as well.
2940 21 Nov 06 nicklas 34 In our original test only 'utf8' worked but we have got reports
2940 21 Nov 06 nicklas 35 stating that now only 'UTF-8' works. If you are using another 
2940 21 Nov 06 nicklas 36 database than MySQL you have to look in the documentation for that 
2940 21 Nov 06 nicklas 37 database how to enable unicode support.
848 30 Jun 05 nicklas 38
848 30 Jun 05 nicklas 39 Tomcat
848 30 Jun 05 nicklas 40 ------
848 30 Jun 05 nicklas 41 Again, there are two steps that must be done:
848 30 Jun 05 nicklas 42
848 30 Jun 05 nicklas 43 1. Change the character encoding parameter in the web.xml file.
848 30 Jun 05 nicklas 44    The web.xml file is located in the BASE_HOME/www/WEB-INF
848 30 Jun 05 nicklas 45    directory. In the bottom of that file you will find a <filter>
848 30 Jun 05 nicklas 46    tag with the name "characterEncoding". Change the value
848 30 Jun 05 nicklas 47    of the <param-value> tag to UTF-8:
848 30 Jun 05 nicklas 48
848 30 Jun 05 nicklas 49    <filter>
848 30 Jun 05 nicklas 50       <filter-name>characterEncoding</filter-name>
848 30 Jun 05 nicklas 51       <filter-class>
848 30 Jun 05 nicklas 52          net.sf.basedb.clients.web.servlet.CharacterEncodingFilter
848 30 Jun 05 nicklas 53       </filter-class>
848 30 Jun 05 nicklas 54       <init-param>
848 30 Jun 05 nicklas 55          <param-name>characterEncoding</param-name>
848 30 Jun 05 nicklas 56          <param-value>UTF-8</param-value>
848 30 Jun 05 nicklas 57       </init-param>
848 30 Jun 05 nicklas 58    </filter>
848 30 Jun 05 nicklas 59
848 30 Jun 05 nicklas 60 2. You must also edit the server.xml found in Tomcats configuration
848 30 Jun 05 nicklas 61    directory, TOMCAT_HOME/conf. In this file you must add the 
848 30 Jun 05 nicklas 62    useBodyEncodingForURI="true" attribute to the <Connector> tag:
848 30 Jun 05 nicklas 63
848 30 Jun 05 nicklas 64    <Connector port="8080" 
848 30 Jun 05 nicklas 65       ...lots of other attributes...
848 30 Jun 05 nicklas 66       useBodyEncodingForURI="true"
848 30 Jun 05 nicklas 67    />
848 30 Jun 05 nicklas 68
848 30 Jun 05 nicklas 69 If you are using another servlet container than Tomcat you should
848 30 Jun 05 nicklas 70 look in the documentation for that container how to make the configuration
848 30 Jun 05 nicklas 71 in step 2.