rgo
написал 15 июня 2005 года в 07:15 (1094 просмотра)
Ведет себя
неопределенно; открыл 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
DevOps as a Service from Palark
24/7 SRE & DevOps service to cover all your Kubernetes needs.

да и ещё. вызов iconv срабатывает, строка переводится в wchar_t. На выходе koi8_size == wchar_size == 0;
У меня твоя прога тоже не работает. iconv из консоли тоже не конвертит в WCHAR_T, в utf8 конвертит. Даже UTF8 из программы не получается, что не так не могу понять
В самом начале надо добавить вызов:
setlocale ("");