13.1. Жесткое кодирование строк в коде Unicode
13.1. Жесткое кодирование строк в коде Unicode
Проблема
Требуется в исходном файле жестко закодировать строки в коде Unicode, т.е. используя расширенный набор символов.
Решение
Начинайте строку с префикса L и затем вводите символы в своем редакторе исходных текстов, как вы это обычно делаете при написании строк, или используйте шестнадцатеричные значения, представляющие нужный вам символ в коде Unicode. Пример 13.1 демонстрирует оба способа кодирования таких строк.
Пример 13.1. Жесткое кодирование строк в коде Unicode
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
// Создать несколько строк с символами кода Unicode
wstring ws1 = L"Infinity: u221E";
wstring ws2 = L"Euro: €"
wchar_t w[] = L"Infinity: u221E";
wofstream out("tmp\unicode.txt");
out << ws2 << endl;
wcout << ws2 << endl;
}
Обсуждение
Основной вопрос, возникающий при жестком кодировании строк в коде Unicode, связан с выбором способа ввода строки в редакторе исходных текстов. В C++ предусмотрен тип расширенного набора символов wchar_t, который может хранить строки в коде Unicode. Точное представление wchar_t зависит от реализации, однако часто используется формат UTF-32. Класс wstring определяется в <string> как последовательность символов типа wchar_t, подобно тому как класс string представляет собой последовательность символов типа char. (Строго говоря, тип wstring определяется, конечно, с помощью typedef как basic_string<wchar_t>.)
Самый простой способ ввода символов в коде Unicode — это использование префикса L перед строковым литералом, как показано в примере 13.1.
wstring ws1 = L"Infinity, u2210"; // Использовать сам код
wstring ws2 = L"Euro: €"; // или просто ввести символ
Теперь можно записать эти строки с расширенным набором символов в поток с расширенным набором символов.
wcout << ws1 << endl; // wcout - версия cout для расширенного набора символов
Их можно записывать также в файлы:
wofstream out("tmp\unicode.txt");
out << ws2 << endl;
При работе с различными кодировками наибольшую ловкость приходится проявлять не для ввода правильных символов в ваши исходные файлы, а при определении типа символьных данных, получаемых из базы данных, по запросу HTTP, из пользовательского ввода и т.д., что выходит за рамки стандарта C++. Стандарт C++ не устанавливает никаких специальных требований, кроме того, что операционная система может использовать для исходных файлов любую кодировку, если она поддерживает, по крайней мере, 96 символов, используемых в языке С++. Для символов, не попадающих в этот набор, называемый основным исходным набором символов, стандартом предусматривается возможность их получения с помощью escape-последовательностей uXXXX или UXXXXXXXX, где X — шестнадцатеричная цифра.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Стратегии использования символов Unicode
Стратегии использования символов Unicode Приступая к работе над проектом в Windows, либо для разработки нового программного кода, либо для переноса существующего, программист, в зависимости от требований проекта, может выбрать одну из четырех стратегий.1. Только 8-битовые
Блокировки в вашем коде
Блокировки в вашем коде Обеспечение безопасности кода при SMP-обработке — это не то, что можно откладывать на потом. Правильная синхронизация, блокировки без тупиковых ситуаций, масштабируемость и ясность кода- все это следует учитывать при разработке с самого начала и до
11.7.2. Изменения в коде
11.7.2. Изменения в коде Как только в parseCommand() будут правильно отражены структуры данных, то запуск команд в правильном порядке становится довольно простым при достаточном внимании к деталям. Прежде всего, мы добавляем цикл в parseCommand() для запуска дочерних процессов,
Поддержка кодировки UNICODE
Поддержка кодировки UNICODE Microsoft ODBC 3.5 определяет два типа драйверов - ANSI и UNICODE. Gemini ODBC-драйвер является по этой классификации драйвером UNICODE. Это дает возможность приложениям, использующим версию UNICODE интерфейса ODBC, обрабатывать данные различных национальных наборов
Функция UNICODE
Функция UNICODE UNICODE (<строковое выражение)возвращает юникод первого символа строкового
Закладки в программном коде
Закладки в программном коде Предположим, сейчас 3 часа ночи. Ваши глаза слипаются, и вас клонит ко сну, но сроки нещадно поджимают, и вы упорно отбиваете на клавиатуре строку за строкой довольно однообразный программный код. Вдруг - прилив вдохновения - вы понимаете, как
10.10.1. Наборы символов Unicode
10.10.1. Наборы символов Unicode MySQL имеет два набора символов Unicode. Вы можете сохранять текст приблизительно для 650 языков, используя эти наборы символов.Объединения ucs2 (UCS-2 Unicode):ucs2_bin ucs2_czech_ci ucs2_danish_ci ucs2_esperanto_ci ucs2_estonian_ci ucs2_general_ci (default) ucs2_hungarian_ci ucs2_icelandic_ci ucs2_latvian_ci ucs2_lithuanian_ci ucs2_persian_ci
Что это за странные конструкции $ifdef в коде?
Что это за странные конструкции $ifdef в коде? Все коды примеров, представленных в книге, за несколькими специальным образом помеченными исключениями, будут компилироваться в средах Delphi1, 2, 3, 4, 5 и 6, а также Kylix 1. (Впрочем, должны поддерживаться и будущие версии компиляторов.
Использование Unicode
Использование Unicode Для описания символов сотен языков всего мира, а также других символьных обозначений (например, математических символов) Unicode позволяет использовать три формы кодирования — UTF-8, UTF-16 и UTF-32.UTF-8В UTF-8 символы разных диапазонов кодируются