Difference between revisions of "Libchecker:Перекодирование текстовых данных"
From EjudgeWiki
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Проверяющие программы]]/[[libchecker]]/[[Libchecker:Функции|Функции]]/[[Libchecker:Перекодирование текстовых данных|Перекодирование текстовых данных]] | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Проверяющие программы]]/[[libchecker]]/[[Libchecker:Функции|Функции]]/[[Libchecker:Перекодирование текстовых данных|Перекодирование текстовых данных]] | ||
+ | |||
+ | Если в задаче требуется вывести текст на русском языке, при проверке вывода возникает проблема множественности кириллических кодировок. В зависимости от операционной системы, ее настроек или среды программирования, в которой подготовленна программа, русский текст может быть представлен в одной из следующих кодировок: [http://ru.wikipedia.org/wiki/KOI8-R KOI8-R], [http://ru.wikipedia.org/wiki/Windows-1251 CP1251], [http://ru.wikipedia.org/wiki/CP866 CP866], [http://ru.wikipedia.org/wiki/ISO8859-5 ISO], [http://ru.wikipedia.org/wiki/MacCyrillic MAC], [http://ru.wikipedia.org/wiki/UTF-8 UTF-8]. | ||
+ | |||
+ | В качестве внутренней кодировки при обработке кириллических данных в библиотеке libchecker используется кодировка [http://ru.wikipedia.org/wiki/UCS-4 UCS-4], в которой на один символ отводится 4 байта. Библиотека предоставляет функции перекодирования данных в кодировку UCS-4 и обработки. | ||
{| | {| | ||
| <tt>[[Libchecker:checker_CHARSET_to_ucs4|checker_koi8r_to_ucs4]]</tt> | | <tt>[[Libchecker:checker_CHARSET_to_ucs4|checker_koi8r_to_ucs4]]</tt> | ||
− | | перекодировать один символ из кодировки KOI8-R в кодировку | + | | перекодировать один символ из кодировки KOI8-R в кодировку UCS-4 |
|- | |- | ||
| <tt>[[Libchecker:checker_CHARSET_to_ucs4|checker_cp866_to_ucs4]]</tt> | | <tt>[[Libchecker:checker_CHARSET_to_ucs4|checker_cp866_to_ucs4]]</tt> | ||
− | | перекодировать один символ из кодировки CP866 в кодировку | + | | перекодировать один символ из кодировки CP866 в кодировку UCS-4 |
|- | |- | ||
| <tt>[[Libchecker:checker_CHARSET_to_ucs4|checker_cp1251_to_ucs4]]</tt> | | <tt>[[Libchecker:checker_CHARSET_to_ucs4|checker_cp1251_to_ucs4]]</tt> | ||
− | | перекодировать один символ из кодировки CP1251 в кодировку | + | | перекодировать один символ из кодировки CP1251 в кодировку UCS-4 |
|- | |- | ||
| <tt>[[Libchecker:checker_CHARSET_to_ucs4_buf|checker_koi8r_to_ucs4_buf]]</tt> | | <tt>[[Libchecker:checker_CHARSET_to_ucs4_buf|checker_koi8r_to_ucs4_buf]]</tt> | ||
− | | перекодировать буфер заданного размера из кодировки KOI8-R в кодировку | + | | перекодировать буфер заданного размера из кодировки KOI8-R в кодировку UCS-4 |
|- | |- | ||
| <tt>[[Libchecker:checker_CHARSET_to_ucs4_buf|checker_cp866_to_ucs4_buf]]</tt> | | <tt>[[Libchecker:checker_CHARSET_to_ucs4_buf|checker_cp866_to_ucs4_buf]]</tt> | ||
− | | перекодировать буфер заданного размера из кодировки CP866 в кодировку | + | | перекодировать буфер заданного размера из кодировки CP866 в кодировку UCS-4 |
|- | |- | ||
| <tt>[[Libchecker:checker_CHARSET_to_ucs4_buf|checker_cp1251_to_ucs4_buf]]</tt> | | <tt>[[Libchecker:checker_CHARSET_to_ucs4_buf|checker_cp1251_to_ucs4_buf]]</tt> | ||
− | | перекодировать буфер заданного размера из кодировки CP1251 в кодировку | + | | перекодировать буфер заданного размера из кодировки CP1251 в кодировку UCS-4 |
|- | |- | ||
| <tt>[[Libchecker:checker_CHARSET_to_ucs4_str|checker_koi8r_to_ucs4_str]]</tt> | | <tt>[[Libchecker:checker_CHARSET_to_ucs4_str|checker_koi8r_to_ucs4_str]]</tt> | ||
− | | перекодировать строку из кодировки KOI8-R в кодировку | + | | перекодировать строку из кодировки KOI8-R в кодировку UCS-4 |
|- | |- | ||
− | | <tt>[[Libchecker: | + | | <tt>[[Libchecker:checker_CHARSET_to_ucs4_str|checker_cp866_to_ucs4_str]]</tt> |
− | | перекодировать строку из кодировки CP866 в кодировку | + | | перекодировать строку из кодировки CP866 в кодировку UCS-4 |
|- | |- | ||
− | | <tt>[[Libchecker: | + | | <tt>[[Libchecker:checker_CHARSET_to_ucs4_str|checker_cp1251_to_ucs4_str]]</tt> |
− | | перекодировать строку из кодировки CP1251 в кодировку | + | | перекодировать строку из кодировки CP1251 в кодировку UCS-4 |
|- | |- | ||
| <tt>[[Libchecker:checker_utf8_to_ucs4_buf|checker_utf8_to_ucs4_buf]]</tt> | | <tt>[[Libchecker:checker_utf8_to_ucs4_buf|checker_utf8_to_ucs4_buf]]</tt> | ||
− | | перекодировать буфер заданного размера из кодировки UTF-8 в кодировку | + | | перекодировать буфер заданного размера из кодировки UTF-8 в кодировку UCS-4 |
|- | |- | ||
| <tt>[[Libchecker:checker_utf8_to_ucs4_str|checker_utf8_to_ucs4_str]]</tt> | | <tt>[[Libchecker:checker_utf8_to_ucs4_str|checker_utf8_to_ucs4_str]]</tt> | ||
− | | перекодировать строку из кодировки UTF-8 в кодировку | + | | перекодировать строку из кодировки UTF-8 в кодировку UCS-4 |
|- | |- | ||
| <tt>[[Libchecker:checker_ucs4_to_CHARSET|checker_ucs4_to_koi8r]]</tt> | | <tt>[[Libchecker:checker_ucs4_to_CHARSET|checker_ucs4_to_koi8r]]</tt> | ||
− | | перекодировать один символ из кодировки | + | | перекодировать один символ из кодировки UCS-4 в кодировку KOI8-R |
|- | |- | ||
| <tt>[[Libchecker:checker_ucs4_to_CHARSET_str|checker_ucs4_to_koi8r_str]]</tt> | | <tt>[[Libchecker:checker_ucs4_to_CHARSET_str|checker_ucs4_to_koi8r_str]]</tt> | ||
− | | перекодировать строку из кодировки | + | | перекодировать строку из кодировки UCS-4 в кодировку KOI8-R |
|- | |- | ||
| <tt>[[Libchecker:checker_ucs4_to_utf8_size|checker_ucs4_to_utf8_size]]</tt> | | <tt>[[Libchecker:checker_ucs4_to_utf8_size|checker_ucs4_to_utf8_size]]</tt> | ||
− | | рассчитать число байт необходимых для кодирования заданной | + | | рассчитать число байт необходимых для кодирования заданной UCS-4 строки в кодировку UTF-8 |
|- | |- | ||
| <tt>[[Libchecker:checker_ucs4_to_utf8_str|checker_ucs4_to_utf8_str]]</tt> | | <tt>[[Libchecker:checker_ucs4_to_utf8_str|checker_ucs4_to_utf8_str]]</tt> | ||
− | | перекодировать строку из кодировки | + | | перекодировать строку из кодировки UCS-4 в кодировку UTF-8 |
|- | |- | ||
| <tt>[[Libchecker:checker_ucs4_tolower|checker_ucs4_tolower]]</tt> | | <tt>[[Libchecker:checker_ucs4_tolower|checker_ucs4_tolower]]</tt> | ||
− | | перевести символ в кодировке | + | | перевести символ в кодировке UCS-4 в нижний регистр |
|- | |- | ||
| <tt>[[Libchecker:checker_ucs4_tolower_buf|checker_ucs4_tolower_buf]]</tt> | | <tt>[[Libchecker:checker_ucs4_tolower_buf|checker_ucs4_tolower_buf]]</tt> | ||
− | | перевести буфер заданного размера в кодировке | + | | перевести буфер заданного размера в кодировке UCS-4 в нижний регистр |
|- | |- | ||
| <tt>[[Libchecker:checker_ucs4_tolower_str|checker_ucs4_tolower_str]]</tt> | | <tt>[[Libchecker:checker_ucs4_tolower_str|checker_ucs4_tolower_str]]</tt> | ||
− | | перевести строку в кодировке | + | | перевести строку в кодировке UCS-4 в нижний регистр |
|- | |- | ||
| <tt>[[Libchecker:checker_strcmp_ucs4|checker_strcmp_ucs4]]</tt> | | <tt>[[Libchecker:checker_strcmp_ucs4|checker_strcmp_ucs4]]</tt> | ||
− | | сравнить две | + | | сравнить две UCS-4 строки |
|- | |- | ||
| <tt>[[Libchecker:checker_eq_str_rus_ucs4|checker_eq_str_rus_ucs4]]</tt> | | <tt>[[Libchecker:checker_eq_str_rus_ucs4|checker_eq_str_rus_ucs4]]</tt> | ||
− | | проверить совпадение строки в одной из поддерживаемых кириллических кодировок со строкой в кодировке | + | | проверить совпадение строки в одной из поддерживаемых кириллических кодировок со строкой в кодировке UCS-4 |
|- | |- | ||
| <tt>[[Libchecker:checker_eq_str_rus_ucs4_nocase|checker_eq_str_rus_ucs4_nocase]]</tt> | | <tt>[[Libchecker:checker_eq_str_rus_ucs4_nocase|checker_eq_str_rus_ucs4_nocase]]</tt> | ||
− | | проверить совпадение строки в одной из поддерживаемых кириллических кодировок со строкой в кодировке | + | | проверить совпадение строки в одной из поддерживаемых кириллических кодировок со строкой в кодировке UCS-4 без учета регистра букв |
|- | |- | ||
| <tt>[[Libchecker:checker_is_utf8_locale|checker_is_utf8_locale]]</tt> | | <tt>[[Libchecker:checker_is_utf8_locale|checker_is_utf8_locale]]</tt> | ||
| проверить, что проверяющая программа работает в UTF-8 локали | | проверить, что проверяющая программа работает в UTF-8 локали | ||
|} | |} |
Latest revision as of 09:51, 26 August 2008
Навигация: Главная страница/Система ejudge/Проверяющие программы/libchecker/Функции/Перекодирование текстовых данных
Если в задаче требуется вывести текст на русском языке, при проверке вывода возникает проблема множественности кириллических кодировок. В зависимости от операционной системы, ее настроек или среды программирования, в которой подготовленна программа, русский текст может быть представлен в одной из следующих кодировок: KOI8-R, CP1251, CP866, ISO, MAC, UTF-8.
В качестве внутренней кодировки при обработке кириллических данных в библиотеке libchecker используется кодировка UCS-4, в которой на один символ отводится 4 байта. Библиотека предоставляет функции перекодирования данных в кодировку UCS-4 и обработки.
checker_koi8r_to_ucs4 | перекодировать один символ из кодировки KOI8-R в кодировку UCS-4 |
checker_cp866_to_ucs4 | перекодировать один символ из кодировки CP866 в кодировку UCS-4 |
checker_cp1251_to_ucs4 | перекодировать один символ из кодировки CP1251 в кодировку UCS-4 |
checker_koi8r_to_ucs4_buf | перекодировать буфер заданного размера из кодировки KOI8-R в кодировку UCS-4 |
checker_cp866_to_ucs4_buf | перекодировать буфер заданного размера из кодировки CP866 в кодировку UCS-4 |
checker_cp1251_to_ucs4_buf | перекодировать буфер заданного размера из кодировки CP1251 в кодировку UCS-4 |
checker_koi8r_to_ucs4_str | перекодировать строку из кодировки KOI8-R в кодировку UCS-4 |
checker_cp866_to_ucs4_str | перекодировать строку из кодировки CP866 в кодировку UCS-4 |
checker_cp1251_to_ucs4_str | перекодировать строку из кодировки CP1251 в кодировку UCS-4 |
checker_utf8_to_ucs4_buf | перекодировать буфер заданного размера из кодировки UTF-8 в кодировку UCS-4 |
checker_utf8_to_ucs4_str | перекодировать строку из кодировки UTF-8 в кодировку UCS-4 |
checker_ucs4_to_koi8r | перекодировать один символ из кодировки UCS-4 в кодировку KOI8-R |
checker_ucs4_to_koi8r_str | перекодировать строку из кодировки UCS-4 в кодировку KOI8-R |
checker_ucs4_to_utf8_size | рассчитать число байт необходимых для кодирования заданной UCS-4 строки в кодировку UTF-8 |
checker_ucs4_to_utf8_str | перекодировать строку из кодировки UCS-4 в кодировку UTF-8 |
checker_ucs4_tolower | перевести символ в кодировке UCS-4 в нижний регистр |
checker_ucs4_tolower_buf | перевести буфер заданного размера в кодировке UCS-4 в нижний регистр |
checker_ucs4_tolower_str | перевести строку в кодировке UCS-4 в нижний регистр |
checker_strcmp_ucs4 | сравнить две UCS-4 строки |
checker_eq_str_rus_ucs4 | проверить совпадение строки в одной из поддерживаемых кириллических кодировок со строкой в кодировке UCS-4 |
checker_eq_str_rus_ucs4_nocase | проверить совпадение строки в одной из поддерживаемых кириллических кодировок со строкой в кодировке UCS-4 без учета регистра букв |
checker_is_utf8_locale | проверить, что проверяющая программа работает в UTF-8 локали |