rgo
написал 15 июня 2005 года в 07:15 (1019 просмотров)
Ведет себя
неопределенно; открыл 61 тему в форуме, оставил 1603 комментария на сайте.
Почему следующий код, вместо русских букв рисует вопросы? Это я чего-то недопонял, или настройки консоли неправильные?
#define __USE_GNU #define _GNU_SOURCE #include #include #include #include char koi8r[] = "ф1"; wchar_t wchar[sizeof (koi8r)]; int main () { iconv_t ic; int koi8r_size = sizeof (koi8r); int wchar_size = sizeof (wchar); char *pkoi8r = koi8r; char *pwchar = (char*)wchar; ic = iconv_open ("WCHAR_T", "KOI8-R"); if (ic == (iconv_t)-1) { perror ("iconv_open"); } if (iconv (ic, &pkoi8r, &koi8r_size, &pwchar, &wchar_size) == (size_t) -1) { perror ("iconv"); } if (fwide (stdout, 1) < 0) { perror ("fwide"); } wprintf (L"result: '%S'\n", wchar); return 0; }
кодировка C файла koi8-r, LC_CTYPE=ru_RU.koi8-r, LANG=ru_ru.koi8-r. Если непосредственно выводить строку в koi8-r то всё Ok.
Насколько я понимаю текст `info libc' всё должно работать, но вместо
result: 'ф1'
result: '?1'
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
да и ещё. вызов iconv срабатывает, строка переводится в wchar_t. На выходе koi8_size == wchar_size == 0;
У меня твоя прога тоже не работает. iconv из консоли тоже не конвертит в WCHAR_T, в utf8 конвертит. Даже UTF8 из программы не получается, что не так не могу понять
В самом начале надо добавить вызов: