Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2011, 13:15   #1
kivkiv
 
Регистрация: 14.05.2011
Сообщений: 8
По умолчанию Автоопределение кодировки

Доброго времени суток!
Я получаю строку символов либо в кодировке CP1251, либо UTF-16. Необходимо определить кодировку (чтобы потом преобразовать, но с этим у меня проблем не будет). Строка может в том числе состоять из одного пробела (в этом случае кодировку можно в общем-то не определять, а просто считать, что она CP1251 - всё равно результат будет одинаковый), только из латиницы, как из латиницы, так и из кирилицы. На вход я получаю null-terminated строку. Однако её длина в байтах тоже известна. Как это сделать? Язык программирования - C. Никаких сторонних библиотек желательно не использовать.
Заранее спасибо за помощь.
kivkiv вне форума Ответить с цитированием
Старый 14.05.2011, 13:30   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Ограбь мозиллу на исходники:

http://www.mozilla.org/projects/intl/chardet.html
Rififi вне форума Ответить с цитированием
Старый 14.05.2011, 13:39   #3
kivkiv
 
Регистрация: 14.05.2011
Сообщений: 8
По умолчанию

Цитата:
Ограбь мозиллу на исходники:

http://www.mozilla.org/projects/intl/chardet.html
Мне нужен сильно упрощённый вариант - кодировки только две.
И даже не обязательно знать наверняка в какой всё кодировки - главное суметь преобразовать в UTF-8 (функции, которые преобразовывают из CP1251 и UTF-16 в UTF-8 есть и их писать не надо). Например, в случае если строка из одно символа, который не превышает по коду 127, то абсолютно всё равно из какой кодировки преобразовывать - результат то будет одинаковый.
kivkiv вне форума Ответить с цитированием
Старый 14.05.2011, 14:00   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

гоогле imultilanguage
Rififi вне форума Ответить с цитированием
Старый 14.05.2011, 14:04   #5
kivkiv
 
Регистрация: 14.05.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
гоогле imultilanguage
Это тоже не подойдёт - мне необходим кросс-платформенный вариант, потому что приложение должно работать не только под Windows, но и, например, под Linux (причём это даже важнее).
kivkiv вне форума Ответить с цитированием
Старый 14.05.2011, 14:17   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

http://unicode.org, здесь описаны все стандарты кодирования unicode.
Rififi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировки Adblock PHP 3 23.11.2010 23:52
Кодировки jungle Операционные системы общие вопросы 8 08.09.2009 09:31
Кодировки Sapsan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 21.03.2009 22:57
Кодировки BOBAH13 Общие вопросы Delphi 8 29.08.2008 14:20
Автоопределение телефона [Smarik] PHP 6 15.03.2008 17:26