Wiki source code of XWiki Character Encoding Configuration
Version 17.1 by Jean SIMARD on 2014/10/22
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{box cssClass="floatinginfobox" title="**Contents**"}} | ||
2 | {{toc/}} | ||
3 | {{/box}} | ||
4 | |||
5 | Below you have the configuration for UTF-8. Note that this is valid for XWiki 1.0 b5 and above. Easier configuration might be provided for upcoming releases. | ||
6 | |||
7 | = XWiki encoding = | ||
8 | |||
9 | Change the charset enconding in these XWiki files: | ||
10 | |||
11 | * **web.xml**: locate the filter class ##org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter## and change it to UTF-8. It should look like this:((( | ||
12 | {{code language="xml"}} | ||
13 | <filter> | ||
14 | <filter-name>Set Character Encoding</filter-name> | ||
15 | <filter-class>org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter</filter-class> | ||
16 | <init-param> | ||
17 | <param-name>encoding</param-name> | ||
18 | <param-value>UTF-8</param-value> | ||
19 | </init-param> | ||
20 | </filter> | ||
21 | {{/code}} | ||
22 | ))) | ||
23 | * **xwiki.cfg** : locate the line containing ##xwiki.encoding## and change it to look like this:((( | ||
24 | {{code}} | ||
25 | xwiki.encoding = UTF-8 | ||
26 | {{/code}} | ||
27 | ))) | ||
28 | |||
29 | = HTML encoding = | ||
30 | |||
31 | Change the HTML encoding in XWiki through Administration ~-~-> Look & Feel ~-~-> Page Elements ~-~-> HTTP Meta Info. | ||
32 | |||
33 | {{warning}} | ||
34 | The HTTP Meta Info section was located in Administration ~--> Presentation in older versions of XWiki. | ||
35 | {{/warning}} | ||
36 | |||
37 | Inside this textbox locate the **Content-type** meta tag and make it look like this, changing the encoding to UTF-8 | ||
38 | |||
39 | {{code language="xml"}} | ||
40 | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | ||
41 | {{/code}} | ||
42 | |||
43 | {{warning}} | ||
44 | This step is not needed if you have the following. Instead that line can be left alone. | ||
45 | {{/warning}} | ||
46 | |||
47 | {{code language="xml"}} | ||
48 | <meta http-equiv="Content-Type" content="text/html; charset=$!xwiki.encoding" /> | ||
49 | {{/code}} | ||
50 | |||
51 | = Hibernate configuration = | ||
52 | |||
53 | Add the following lines in the ##hibernate.cfg.xml## file: | ||
54 | |||
55 | {{code language="xml"}} | ||
56 | <property name="connection.useUnicode">true</property> | ||
57 | <property name="connection.characterEncoding">UTF-8</property> | ||
58 | {{/code}} | ||
59 | |||
60 | = MySQL configuration = | ||
61 | |||
62 | It's common practice that the MySQL configuration file, in *nix systems is located in $$/etc/mysql/my.cnf##:## | ||
63 | Starting with MySQL 5.5.3 the option 'default-character-set=utf8' is deprecated under [mysql] | ||
64 | |||
65 | {{code}} | ||
66 | [client] | ||
67 | default-character-set=utf8 | ||
68 | [mysqld] | ||
69 | default-character-set=utf8 | ||
70 | character-set-server = utf8 | ||
71 | collation-server = utf8_bin | ||
72 | {{/code}} | ||
73 | |||
74 | **After 5.5.3** | ||
75 | |||
76 | {{code}} | ||
77 | [client] | ||
78 | default-character-set=utf8 | ||
79 | [mysqld] | ||
80 | character-set-server = utf8 | ||
81 | collation-server = utf8_bin | ||
82 | {{/code}} | ||
83 | |||
84 | |||
85 | |||
86 | = Servlet Container = | ||
87 | |||
88 | == Jetty == | ||
89 | |||
90 | {{code}} | ||
91 | echo off | ||
92 | rem set LANG=fr_FR.ISO8859-1 | ||
93 | set LANG=en_US.UTF-8 | ||
94 | set JETTY_PORT=8080 | ||
95 | set JETTY_HOME=. | ||
96 | java %JAVA_OPTS% -Djetty.port=%JETTY_PORT% -Djetty.home=%JETTY_HOME% -Dfile.encoding=UTF-8 -jar %JETTY_HOME%/start.jar | ||
97 | {{/code}} | ||
98 | |||
99 | Instead of the config system variable LANG you can use JVM properties. | ||
100 | |||
101 | {{code}} | ||
102 | -Duser.language=en | ||
103 | -Duser.country=US | ||
104 | {{/code}} | ||
105 | |||
106 | in server startup script. | ||
107 | |||
108 | == Tomcat == | ||
109 | |||
110 | In order to enable UTF-8 in tomcat, you have to add | ||
111 | |||
112 | {{code}} | ||
113 | URIEncoding="UTF-8" | ||
114 | {{/code}} | ||
115 | |||
116 | to each connector enabled/used in ##conf/server.xml##. For example the non-SSL HTTP Connector should read: | ||
117 | |||
118 | {{code language="xml"}} | ||
119 | <Connector port="8080" maxHttpHeaderSize="8192" | ||
120 | maxThreads="150" minSpareThreads="25" maxSpareThreads="75" | ||
121 | enableLookups="false" redirectPort="8443" acceptCount="100" | ||
122 | connectionTimeout="20000" disableUploadTimeout="true" | ||
123 | URIEncoding="UTF-8"/> | ||
124 | {{/code}} | ||
125 | |||
126 | {{warning}} | ||
127 | In case you're using AJP to connect Tomcat and httpd, make sure you add this attribute to the AJP connector. | ||
128 | {{/warning}} | ||
129 | |||
130 | == [[Glassfish>>http://glassfish.java.net/]] == | ||
131 | |||
132 | To run XWiki with UTF-8 in Glassfish you will need to recreate the **xwiki-enterprise.war** file and do a change to the glassfish config. First, in the Administration GUI under Domain => General => Locale enter **en_US.UTF-8**. | ||
133 | |||
134 | Now you will need to add all the aforementioned changes from this document to the files in the war file, create a new warfile, and deploy that one to your glassfish installation. This is required due to the fact that Glassfish will not accept changes to a deployed web.xml file. So you need to deploy a ready changed **web.xml** file inside your war file because all subsequent changes to the deployed **web.xml** file in the filesystem are totally ignored. | ||
135 | |||
136 | Create a new directory that we will use as a temporary place to edit our war file: | ||
137 | |||
138 | {{code}} | ||
139 | mkdir xwikitmp | ||
140 | {{/code}} | ||
141 | |||
142 | Unpack the warfile: | ||
143 | |||
144 | {{code}} | ||
145 | cd xwikitemp;jar xvf ../xwiki-enterprise-web-1.5.war | ||
146 | {{/code}} | ||
147 | |||
148 | Edit the files as mentioned in the beginning of this article: | ||
149 | |||
150 | * wiki.cfg | ||
151 | * web.xml | ||
152 | * hibernate.cfg.xml | ||
153 | |||
154 | Now let's create a new warfile which contains all the changes: | ||
155 | |||
156 | {{code}} | ||
157 | jar cvf ../xwiki-enterprise-web-local-1.5.war . | ||
158 | {{/code}} | ||
159 | |||
160 | Now you can deploy your new .war file to Glassfish and it will have all the changes in it and wll be correctly deployed. | ||
161 | |||
162 | = System config = | ||
163 | |||
164 | Add the following variables to your system: | ||
165 | |||
166 | {{code}} | ||
167 | LANG = en_US.UTF-8 | ||
168 | {{/code}} | ||
169 | |||
170 | [[Credits>>http://markmail.org/message/qitvntzz7cwpyo2w]] | ||
171 | |||
172 | = OpenOffice import = | ||
173 | |||
174 | If OpenOffice import turns characters into question marks or HTML Entity you need to edit **registrymodifications.xcu** located in user profile used by the OO server by adding: | ||
175 | |||
176 | {{code}} | ||
177 | <item | ||
178 | oor:path="/org.openoffice.Office.Common/Filter/HTML/Export"><prop | ||
179 | oor:name="Encoding" oor:op="fuse"><value>76</value></prop></item> | ||
180 | {{/code}} | ||
181 | |||
182 | [[Credits>>http://lists.xwiki.org/pipermail/users/2011-November/021004.html]] |