| /**************************************************************************** |
| ** |
| ** Copyright (C) 2016 The Qt Company Ltd. |
| ** Contact: https://www.qt.io/licensing/ |
| ** |
| ** This file is part of the documentation of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:FDL$ |
| ** Commercial License Usage |
| ** Licensees holding valid commercial Qt licenses may use this file in |
| ** accordance with the commercial license agreement provided with the |
| ** Software or, alternatively, in accordance with the terms contained in |
| ** a written agreement between you and The Qt Company. For licensing terms |
| ** and conditions see https://www.qt.io/terms-conditions. For further |
| ** information use the contact form at https://www.qt.io/contact-us. |
| ** |
| ** GNU Free Documentation License Usage |
| ** Alternatively, this file may be used under the terms of the GNU Free |
| ** Documentation License version 1.3 as published by the Free Software |
| ** Foundation and appearing in the file included in the packaging of |
| ** this file. Please review the following information to ensure |
| ** the GNU Free Documentation License version 1.3 requirements |
| ** will be met: https://www.gnu.org/licenses/fdl-1.3.html. |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| /*! |
| \group string-processing |
| \title Classes for String Data |
| |
| \brief Classes for working with string data. |
| |
| These classes are relevant when working with string data. See the |
| \l{Unicode in Qt}{information about support for Unicode in Qt} for |
| more information. |
| */ |
| |
| |
| /*! |
| \page unicode.html |
| \title Unicode in Qt |
| \brief Information about support for Unicode in Qt. |
| |
| \keyword Unicode |
| |
| |
| \l{http://www.unicode.org/}{Unicode} |
| is the standard for encoding text in almost all languages |
| spoken in the world. It is nowadays used as the native encoding |
| for text on most modern operating systems. The major exception is |
| Microsoft Windows that still has a dual system supporting code pages |
| and Unicode for applications. |
| |
| \section1 Qt's Classes for Working with Strings |
| |
| These classes are relevant when working with string data. For information |
| about rendering text, see the \l{Rich Text Processing} overview, and if |
| your string data is in XML, see the \l{XML Processing} overview. |
| |
| \annotatedlist string-processing |
| |
| \section1 Information about Unicode on the Web |
| |
| The \l{http://www.unicode.org/}{Unicode Consortium} has a number |
| of documents available, including |
| |
| \list |
| |
| \li \l{http://www.unicode.org/versions/latest/}{The current version of the standard} |
| \li \l{http://www.unicode.org/unicode/standard/principles.html}{A |
| technical introduction to Unicode} |
| \li \l{http://www.unicode.org/unicode/standard/standard.html}{The |
| home page for the standard} |
| |
| \endlist |
| |
| \section1 Unicode in Qt |
| |
| In Qt, and in most applications that use Qt, most or all user-visible |
| strings are stored using Unicode. Qt provides: |
| |
| \list |
| |
| \li Translation to/from legacy encodings for file I/O: see |
| QTextCodec and QTextStream. |
| \li Support for locale specific Input Methods and keyboards. |
| \li A string class, QString, that stores Unicode characters, with |
| support for migrating from C strings including fast |
| translation to and from UTF-8, ISO8859-1 and US-ASCII, and all the |
| usual string operations. |
| \li Unicode-aware UI controls. |
| \li Unicode compliant text segmentation (QTextBoundaryFinder) |
| \li Unicode compliant line breaking and text rendering |
| |
| \endlist |
| |
| To fully benefit from Unicode, we recommend using QString for storing |
| all user-visible strings, and performing all text file I/O using |
| QTextStream. |
| |
| All the function arguments in Qt that may be user-visible strings, |
| QLabel::setText() and a many others, take \c{const QString &}s. |
| QString provides implicit casting from \c{const char *} |
| so that things like |
| |
| \snippet snippets/code/doc_src_unicode.cpp 0 |
| |
| will work. There is also a function, QObject::tr(), that provides |
| translation support, like this: |
| |
| \snippet snippets/code/doc_src_unicode.cpp 1 |
| |
| QObject::tr() maps from \c{const char *} to a Unicode string, and |
| uses installable QTranslator objects to do the mapping. |
| |
| Qt provides a number of built-in QTextCodec classes, that is, |
| classes that know how to translate between Unicode and legacy |
| encodings to support programs that must talk to other programs or |
| read/write files in legacy file formats. |
| |
| Conversion to/from \c{const char *} uses a UTF-8. |
| However, applications can easily find codecs |
| for other locales, and set any open file or network connection to use |
| a special codec. |
| |
| Since US-ASCII and ISO-8859-1 are so common, there are also especially |
| fast functions for mapping to and from them. For example, to open an |
| application's icon one might do this: |
| |
| \snippet snippets/code/doc_src_unicode.cpp 2 |
| |
| or |
| |
| \snippet snippets/code/doc_src_unicode.cpp 3 |
| |
| Qt supports rendering text in most languages written in the world. The detailed |
| list of supported writing systems depends a bit on operating system support and |
| font availability on the target system. |
| |
| \sa {Internationalization with Qt} |
| */ |