%% Created: 22.09.99
%% RCS-ID: $Id$
%% Copyright: (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-%% Licence: wxWidgets license
+%% Licence: wxWindows license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Unicode support in wxWidgets}\label{unicode}
\subsection{What is Unicode?}\label{whatisunicode}
-Starting with release 2.1 wxWidgets has support for compiling in Unicode mode
+wxWidgets has support for compiling in Unicode mode
on the platforms which support it. Unicode is a standard for character
encoding which addresses the shortcomings of the previous, 8 bit standards, by
using at least 16 (and possibly 32) bits for encoding each character. This
What happens here? First of all, you see that there are no more {\tt \#ifdef}s
at all. Instead, we define some types and macros which behave differently in
-the Unicode and ANSI builds and allows us to avoid using conditional
+the Unicode and ANSI builds and allow us to avoid using conditional
compilation in the program itself.
We have a {\tt wxChar} type which maps either on {\tt char} or {\tt wchar\_t}
Unicode or ANSI strings and which thus makes it unnecessary to ever perform
any conversions in the program). GTK 2.0 only accepts UTF-8 strings.
-To get a ANSI string from a wxString, you may use the
+To get an ANSI string from a wxString, you may use the
mb\_str() function which always returns an ANSI
string (independently of the mode - while the usual
\helpref{c\_str()}{wxstringcstr} returns a pointer to the internal
useful, is wc\_str() function which always returns
the Unicode string.
+Sometimes it is also necessary to go from ANSI strings to wxStrings.
+In this case, you can use the converter-constructor, as follows:
+
+\begin{verbatim}
+ const char* ascii_str = "Some text";
+ wxString str(ascii_str, wxConvUTF8);
+\end{verbatim}
+
+This code also compiles fine under a non-Unicode build of wxWidgets,
+but in that case the converter is ignored.
+
+For more information about converters and Unicode see
+the \helpref{wxMBConv classes overview}{mbconvclasses}.
+
% TODO describe fn_str(), wx_str(), wxCharBuf classes, ...
\subsection{Unicode-related compilation settings}\label{unicodesettings}
You should define {\tt wxUSE\_UNICODE} to $1$ to compile your program in
-Unicode mode. Note that it currently only works in Win32 and GTK 2.0 and
-that some parts of
-wxWidgets are not Unicode-compliant yet. If you
+Unicode mode. This currently works for wxMSW, wxGTK, wxMac and wxX11. If you
compile your program in ANSI mode you can still define {\tt wxUSE\_WCHAR\_T}
to get some limited support for {\tt wchar\_t} type.