Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для k1-801
4 / 4 / 6
Регистрация: 07.01.2013
Сообщений: 136

Как настроить кодировку для Windows

02.06.2014, 16:12. Показов 3904. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Но на этот раз уже не просто вывод в консоль.
Создание и чтение файлов, которые могут быть с равной вероятностью на кириллице, содержать пробелы... Да, что называется, хоть иврит.
На моём уютном линуксовом ноутбуке - всё прекрасно. У знакомых с Шindoшs - всё плохо.
Имя папки получаю с помощью SDL2, а именно - SDL_GetBasePath(). Сомневаюсь, что у самого SDL есть какие-то проблемы с этим... Но проблемы есть у меня.
Допустим, я записал адрес этой папки в буфер, рядом с ним приписал "log.log". Кириллица, насколько я понял, будет в UTF-8. Если сделать fopen сразу указав в качестве пути буфер - будет плохо. Файл не откроется. Как мне гарантированно открывать эти файлы, читать папки внутри этой?

Добавлено через 4 часа 39 минут
Это настолько глупый вопрос или всем некогда?...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.06.2014, 16:12
Ответы с готовыми решениями:

Как настроить кодировку для корректного чтения кириллицы
как писать по русский в qt? пробую так,но не выходит ui->pushButton->setText(QObject::tr("Пос\nчи\nта\nть")); main #include...

Как настроить кодировку БД
Здравствуйте! Я новичок в PHP и MySQL. Решил вот набрать простейшую программку на PHP, которая выводит содержимое таблицы info (в БД...

Настроить кодировку в mariadb 10.1 для работы приложением на Delphi
Добрый день. Стоит задача подружить программу на delphi c базой данных mariadb 10.1.34 на сервере ubuntu 18.04.1. База поднимается с...

28
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,932
Записей в блоге: 5
04.06.2014, 17:02
Студворк — интернет-сервис помощи студентам
У входной и выходной строки вы указали одинаковую длину. А для выходного параметра обычно требуется большая длина. Но ошибка может быть не в этом. Надо выкладывать на форум номер и расшфровку ошибки.
0
 Аватар для k1-801
4 / 4 / 6
Регистрация: 07.01.2013
Сообщений: 136
05.06.2014, 00:38  [ТС]
Цитата Сообщение от palva Посмотреть сообщение
У входной и выходной строки вы указали одинаковую длину. А для выходного параметра обычно требуется большая длина.
Длина должна была быть меньше, но проблема не в этом была (банальная опечатка, звёздочку пропустил).
Гораздо хуже с
C
1
            swprintf(buf, wcslen(texpath) + wcslen(d_name), L"%ls%ls", wtexpath, d_name);
0
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
05.06.2014, 01:40
Цитата Сообщение от k1-801 Посмотреть сообщение
Про то что у меня криво написан вызов WideCharToMultiByte говорить не нужно, я его ещё не доделал.
Так есть же стандартные wcstombs и mbtowcs, или здесь просто велосипедостроение?
0
 Аватар для k1-801
4 / 4 / 6
Регистрация: 07.01.2013
Сообщений: 136
05.06.2014, 10:27  [ТС]
Цитата Сообщение от Вованя Посмотреть сообщение
wcstombs и mbtowcs
И из какой же кодировки, интересно мне знать, оно будет пытаться перевести текст, если кодировка на вход не подаётся?
0
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
05.06.2014, 13:30
Цитата Сообщение от k1-801 Посмотреть сообщение
оно будет пытаться перевести текст, если кодировка на вход не подаётся?
Понятно. Когда закончите свою функцию, будьте любезны, скиньте её сюда, интересно взглянуть.
0
 Аватар для k1-801
4 / 4 / 6
Регистрация: 07.01.2013
Сообщений: 136
05.06.2014, 14:51  [ТС]
Видимо, нужно сделать отдельную тему касательно swprintf, здесь не отвечают.

Добавлено через 18 минут
Цитата Сообщение от Вованя Посмотреть сообщение
Когда закончите свою функцию
Не "свою функцию".
Встроенная виндовая приблуда.
Я имел ввиду, что не все аргументы в том коде дописаны были. Два NULL'а в конец надо было добавить.
Вот так:
C
1
WideCharToMultiByte(CP_UTF8, 0, d_name, wcslen(d_name), tmptexturepack.name, wcslen(d_name), NULL, NULL);
Лучше бы вы помогли с swprintf'ом. Это сейчас куда важнее.

Добавлено через 31 минуту
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#ifdef _WIN32
    int tpl = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, texpath, -1, NULL, 0);
    wchar_t *wtexpath = calloc(tpl + 1, sizeof(wchar_t));
    MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, texpath, -1, wtexpath, tpl);
 
    _WDIR *wtexdir = _wopendir(wtexpath);
    struct _wdirent *wtexdirent;
 
    while(wtexdirent = _wreaddir(wtexdir))
    {
        wchar_t *d_name = wtexdirent->d_name;
        if(!wcscmp(d_name, L"empty.png"))
            emptyexists = 1;
        if(wcscmp(d_name, L".") && wcscmp(d_name, L"..")) // Skip virtual dirs
        {
            wchar_t *buf = calloc(wcslen(wtexpath) + wcslen(d_name) + 1, sizeof(wchar_t));
            printf("1 - Alive!\n");
            swprintf(buf, wcslen(wtexpath) + wcslen(d_name), L"%ls%ls", wtexpath, d_name);
            printf("2 - Alive!\n");
            _WDIR *wtmpdir = _wopendir(buf);
            if(wtmpdir)
            {
                Texturepack tmptexturepack;
                tmptexturepack.name = calloc(wcslen(d_name), sizeof(char));
                WideCharToMultiByte(CP_UTF8, 0, d_name, wcslen(d_name), tmptexturepack.name, wcslen(d_name), NULL, NULL);
                AddTexturepackToList(cont->texturepackList, tmptexturepack);
                logWriteWithPrefix("Found texturepack", d_name);
                if(!strcmp(tmptexturepack.name, "Default")) // If it's name is "Default"
                {
                    deffound = cont->texturepackList->size;
                    logWrite(" > Default texturepack");
                }
                if(!strcmp(tmptexturepack.name, cont->texturepackName)) // If it's name is simillar to previous selected
                {
                    selfound = 1;
                    cont->texturepackId = cont->texturepackList->size;
                    logWrite(" > Selected texturepack");
                }
            }
            _wclosedir(wtmpdir);
            free(buf);
            buf = NULL;
        }
    }
    _wclosedir(wtexdir);
#else
Добавлено через 18 минут
Временно заменил на
C
1
2
wcscat(buf, wtexpath);
wcscat(buf, d_name);
Люди! Отвечайте же вы наконец!
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
05.06.2014, 19:35
k1-801, Вам кто-то что-то должен? Этот конфуз будет Вам хорошим уроком как нельзя писать программы.
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,932
Записей в блоге: 5
05.06.2014, 19:50
Цитата Сообщение от castorsky Посмотреть сообщение
Этот конфуз будет Вам хорошим уроком как нельзя писать программы.

Не по теме:

Все-таки неумеющих здесь учат. А вот не умеющих общаться избегают.

0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
05.06.2014, 20:12
Так всё уже давно сказано. Человек упорно продолжает писать на чистом си. Использовать системыне api, обложиться препроцессорными директивами. Я понимаю что большая часть программы уже написана и переписывать все с нуля не хочется, но не вижу другого выхода.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.06.2014, 20:12

Как настроить русскую кодировку в Finder?
Здравствуйте, зачастую присылаемые мне файлы с русскими названиями в Finder отображаются как "????? ?????" Подскажите,...

Как настроить кодировку под ДОС?
читаю текстовый файл в текстбокс, но не могу настроить кодировку, файл досовский, как быть, кто нибудь знает? заранее спасибо.

Как настроить кодировку (почему не работает CharToOemA)?
Ребят, собственно см. картинку. Почему после казалось бы простейшей операции в "buf" иероглифы? std::string str="ПРЭВЭД...

Как настроить кодировку при выводе в консоль?
Где настраивается?

Сайт на денвере: как правильно настроить кодировку
сайт на денвере, устанавливаю и активирую русский язык, то что из пакета русского языка - отображается нормально, то что ввожу я в статье...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru