|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Тип char, определение кодировки (UTF8 или ANSI) |
|
C/C++ - Тип char, определение кодировки (UTF8 или ANSI)
|
![]() Пользователь Сообщения: 133 |
Подскажите, пожалуйста.
Имеется массив символов типа char (язык С++). Необходимо определить кодировку этих символов (UTF8 или ANSI). Возможно ли это? |
|
------- Отправлено: 14:38, 14-05-2008 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать если имеется какой-нить словарик с типичными фразами, то наверное можно. Если на ascii может быть написана какая-то любая фигня, то однозначно нельзя
|
Отправлено: 14:52, 14-05-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать EvgeniyQQQ, Не знаю, что есть ANSI. Но в ASCII не может быть символов с кодом > 127 (это 7-итная кодировка). Если же используется "расширенный" ASCII (Latin-1 или любая другая национальная кодировка), то можно просто проверить, что исходная строка содержит символы с кодом > 127 и является корректной utf-8 строкой (т.е. удовлетворяет этим требованиям: http://tools.ietf.org/html/rfc3629#section-3). Если строка достаточно большая и не в utf-8, то где-нибудь обязательно будет неправильна закодирована, и следовательно не utf-8, иначе "произвольная однобайтовая кодировка".
|
------- Отправлено: 15:01, 14-05-2008 | #3 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. И наоборот, в тексте UTF-8 любой байт со значением меньше 128 изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байтов, в которых первый байт всегда имеет вид 11xxxxxx, а остальные — 10xxxxxx. Более подробно о UTF-8 посмотрите http://ru.wikipedia.org/wiki/UTF-8. Что же касается ANSI - то насколько я понимаю, это то же, что и кодировка Windows-1251, т.е. 8-битная и содержит русские символы.
|
------- Отправлено: 04:44, 20-05-2008 | #4 |
Новый участник Сообщения: 4
|
Профиль | Сайт | Отправить PM | Цитировать Потребовалось мне автоопределение кодировки в текстовом файле; нашёл (не претендуя на универсальность) такой выход (builder xe3):
String tst= al+af+am+bt+sn; // несколько тэгов, выделенных из fb2 файла if( tst[1]>0x007F && UTF8Decode(tst)[1]!=0xfffd ) al=UTF8Decode(al);// нет, это не ansi! суть в том, что UTF8Decode от русского ansi-текста возвращает строку, забитую 0xFFFD а от английского ansi-текста или любого utf8-текста возвращает читабельный ansi-текст. ps для fb2, понятно, надо каждый тег проверять (т.к. в utf файле могут быть смешаны и русские и английские тэги), но принцип проверки понятен. |
|
Отправлено: 01:06, 30-03-2013 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Автоматическое определение типа ОС - 32 или 64 бит. | LonerD | Автоматическая установка Windows 2000/XP/2003 | 35 | 19-08-2013 13:01 | |
C/C++ - [решено] Определение функций кнопки или TButton::OnClick.Как сделать? | Virtyaluk | Программирование и базы данных | 8 | 01-02-2010 04:56 | |
CMD/BAT - [решено] Изменение кодировки txt файла из ANSI в UTF-16 LE | crashtuak | Скриптовые языки администрирования Windows | 11 | 20-08-2009 11:57 | |
RDP/Citrix/Term - Определение ip по имени пользователя или вопрос по программе BGinfo | gavBTR | Сетевые технологии | 2 | 24-07-2008 10:02 | |
Разное - [решено] Определение легальности Windows XP или просто S/N без интернета. | Diseased Head | Лицензирование продуктов Microsoft | 13 | 24-03-2008 12:14 |
|