"UTF-8 (8-bit Unicode Transformation Format) is a lossless, variable-length character encoding for Unicode created by Ken Thompson and Rob Pike. It uses groups of bytes to represent the Unicode standard for the alphabets of many of the world's languages." (Wikipedia). Further information may be found at UTF-8.com.
WIKINDX uses UTF-8 encoding throughout and all template header.tpl files must contain the line:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
If web browser output has not been UTF-8 encoded, non-English characters may display as '?' or their literal UTF-8 representation. As long as the charset in header.tpl is set to UTF-8, all form input from the user is automatically stored in the database as UTF-8 and, once requested from the database, will be displayed in its original and correct character formatting in the web browser.
However, because the charset is UTF-8, all text destined for browser display that does not originate in the database via form input must be encoded in UTF-8 prior to browser display. This includes all text in the files within the languages/ folder and database fields whose data originates from file uploading as opposed to form input (such as bibTeX import). If you are a translator working on files within languages/, you don't need to worry about UTF-8 encoding as it has all been done for you. If you are a developer and need to UTF-8 encode, you simply use the PHP function utf8_encode(STRING)
before sending data to the browser (for system messages and help files) or before storing data in the database (for file imports etc.) (remember, you do not need to do this for data that is input in form fields). Developers beware! Some preg_xxx() operations interfere with the UTF-8 encoding of data in the database producing incorrect browser display -- you may need to decode the UTF-8 first then finally utf8_encode(). Do not use PHP's utf8_decode()! Use the method UTF8::decodeUtf8(STRING: $string).