|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.09.2013, 13:23 | #1 |
Пользователь
Регистрация: 09.04.2011
Сообщений: 49
|
Напечатать русский текст в UTF-8
Русские буквы в уникоде начинаются с 0x410, то есть два байта.
Английские буквы печатаются нормально (0x40, 0x41, ...) "Левые" буквы типа "Ð" (0xD0) тоже печатаются. А вот русская "А" с кодом 0x410 - нет, даже не открывается файл со шрифтом. Шрифт FBF, какой именно сказать не могу, какой-то пропраэтарный. Пробовал выводить букву "А" в виде 0x10 (семь последних значащих битов в 32-битном или 16-битном UTF), но так они просто игнорируются. Подскажите пожалуйста какие еще можно эксперименты сделать. Последний раз редактировалось tiger(); 04.09.2013 в 13:44. |
04.09.2013, 18:44 | #2 |
Форумчанин
Регистрация: 03.08.2013
Сообщений: 208
|
Не знаю какие именно эксперементы вы делаете, но если у Вас массив типа char (однобитовый),
то выводить нужно попарно (в два байта). Одной кириллической букве соответствуют два байта. К примеру, char szA[3] = "А"; cout << szA << endl; Последний байт для строкового терминатора. Строковой терминатор ('\0' служит для указания на конец массива). В юникоде есть специальные переключатели - символы, указывающие на применение национальных языков. Стоит поискать два парных символя для вывода русского "А". Последний раз редактировалось chipside; 04.09.2013 в 18:52. |
09.09.2013, 10:09 | #3 | |
Пользователь
Регистрация: 09.04.2011
Сообщений: 49
|
Цитата:
- оригинальный шрифт вообще не имел русского языка, поставил русскоязычный шрифт, тоже с уникодом - действительно, считывать надо по 2 байта, т.к. русские буквы в уникоде кодируются по 2 байта. но тогда не работают однобайтовая первая часть таблицы уникода, где расположены латинские буквы. для моего применения это не важно, но все равно как-то криво. - переводы двухбайтовых символов в однобайтовые кодировки с переносом значащих битов не помогают |
|
09.09.2013, 12:15 | #4 |
Пользователь
Регистрация: 31.08.2013
Сообщений: 93
|
Не совсем понял в чем проблема?
MultiByteToWideChar() из ANSI в Unicode WideCharToMultiByte() из Unicode в ANSI Код:
|
09.09.2013, 19:24 | #5 |
Пользователь
Регистрация: 10.08.2013
Сообщений: 67
|
если уж потоки ввода/вывода, то ios::imbue
|
10.09.2013, 08:18 | #6 |
Пользователь
Регистрация: 09.04.2011
Сообщений: 49
|
Если бы было нужно печатать вмешанный текст, в котором мы бы не знали где стоят русские, а где латинские буквы, это было бы невозможно определить: для драйвера вывода текста есть только формат чтения (1 или 2 байта) и набор байтов откуда брать и все.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Flash - Русский текст в xml Флеш | madstill | Общие вопросы Web | 2 | 27.02.2013 23:07 |
русский текст и буквы | majesticx777 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 15.06.2011 13:34 |
не вставляются русский текст | Domanoff | БД в Delphi | 5 | 08.04.2010 11:53 |
TD не распознает русский текст | Natalia-xxx- | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 05.03.2009 15:22 |
напечатать текст из Memo | Sanek777 | Общие вопросы Delphi | 1 | 30.08.2008 21:25 |