|
3 / 2 / 2
Регистрация: 14.12.2009
Сообщений: 149
|
|
Linux кириллица в файлах26.08.2020, 01:14. Показов 10127. Ответов 24
Метки нет (Все метки)
здравствуйте
вопрос: как работать с файлами в линукс, если в них присутствует кириллица? если открываю используя fstream и считываю getline то на месте кириллических символов символы с отрицательными кодами если открываю используя wfstream и считываю также getline, то на месте первого кириллического символа завершающий символ '\0'
0
|
|
| 26.08.2020, 01:14 | |
|
Ответы с готовыми решениями:
24
Кириллица в файлах |
|
Почетный модератор
11561 / 4356 / 453
Регистрация: 12.06.2008
Сообщений: 12,458
|
|
| 27.08.2020, 22:59 | |
|
Если нужно обрабатывать строку, то удобнее переводить в wchar_t. Я не знаю, как это сделать правильно. Могу предложить три варианта:
1. Использовать функции mbsinit, mbsrtowcs (с предварительным вызовом setlocale). 2. Использовать какую-нибудь библиотеку (например, iconv) для перевода кодировки из UTF-8 в UTF-32 (которая используется для wchar_t в Linux). 3. Написать свою функцию для перевода кодировки.
0
|
|
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,087
|
|
| 28.08.2020, 08:51 | |
|
Humanoid, если речь именно о работе с wchar_t (кстати, под windows это ущербный utf-16, который объединяет недостатки и utf-8 и utf-32, так что там от него преимуществ практически нет), то логично либо mbstowcs если исходная строка в utf-8, либо сразу читать в wchar_t при помощи специальных функций вроде fgetws, аналогов для scanf и printf (формат "ls" либо "%S").
2. iconv скорее для работы с устаревшими кодировками вроде cp1251, 866, koi8-r и т.д. Если писать свою программу, скорее всего можно будет без этого обойтись. 3. А вот это придется делать если нужна совсем жесткая обработка вроде сортировки (в разных локалях разные правила), перевода в верхний-нижний регистры (там соответствие не взаимооднозначное). Ну и диактрические символы, куда ж без них. В обычных кодировках вроде тех же utf-8, utf-32 хранится отдельно символ, отдельно все эти черточки и точки сверху и снизу. То есть для совсем правильной обработки их надо как-то к символу привязать.
0
|
|
|
3 / 2 / 2
Регистрация: 14.12.2009
Сообщений: 149
|
||||||||||||||||
| 30.08.2020, 00:28 [ТС] | ||||||||||||||||
|
Еще раз поясню.
Для примера есть файл, его содержимое это одна строка "one два three". Если я его считываю так:
a1[0] = {char} 111 'o' a1[1] = {char} 110 'n' a1[2] = {char} 101 'e' a1[3] = {char} 32 ' ' a1[4] = {char} -48 '\320' a1[5] = {char} -76 '\264' a1[6] = {char} -48 '\320' a1[7] = {char} -78 '\262' a1[8] = {char} -48 '\320' a1[9] = {char} -80 '\260' a1[10] = {char} 32 ' ' a1[11] = {char} 116 't' a1[12] = {char} 104 'h' a1[13] = {char} 114 'r' a1[14] = {char} 101 'e' a1[15] = {char} 101 'e' a1[16] = {char} 0 '\000' Например, если:
b1[0] = {wchar_t} 111 L'o' b1[1] = {wchar_t} 110 L'n' b1[2] = {wchar_t} 101 L'e' b1[3] = {wchar_t} 32 L' ' b1[4] = {wchar_t} 1076 L'д' b1[5] = {wchar_t} 1074 L'в' b1[6] = {wchar_t} 1072 L'а' b1[7] = {wchar_t} 32 L' ' b1[8] = {wchar_t} 116 L't' b1[9] = {wchar_t} 104 L'h' b1[10] = {wchar_t} 114 L'r' b1[11] = {wchar_t} 101 L'e' b1[12] = {wchar_t} 101 L'e' b1[13] = {wchar_t} 0 L'\000' Вот это я и хотел бы наблюдать, открыв файл и считав из него строку. Попытка использовать mbsrtowcs к успеху не приводит:
b1[0] = {wchar_t} 111 L'o' b1[1] = {wchar_t} 110 L'n' b1[2] = {wchar_t} 101 L'e' b1[3] = {wchar_t} 32 L' ' b1[4] = {wchar_t} -46891148 L'\xfd347f74' b1[5] = {wchar_t} 32712 L'翈' b1[6] = {wchar_t} 1 L'\001' b1[7] = {wchar_t} 32764 L'翼' b1[8] = {wchar_t} -1 L'\xffffffff' b1[9] = {wchar_t} 0 L'\000' b1[10] = {wchar_t} -46591609 L'\xfd391187' b1[11] = {wchar_t} 32712 L'翈' b1[12] = {wchar_t} -48685248 L'\xfd191f40' b1[13] = {wchar_t} 32712 L'翈'
0
|
||||||||||||||||
|
Почетный модератор
11561 / 4356 / 453
Регистрация: 12.06.2008
Сообщений: 12,458
|
|
| 30.08.2020, 01:12 | |
|
0
|
|
|
3 / 2 / 2
Регистрация: 14.12.2009
Сообщений: 149
|
|
| 30.08.2020, 10:21 [ТС] | |
|
0
|
|
| 30.08.2020, 10:21 | |
|
Кириллица в bat-файлах
Какая СУБД хранит данные в файлах с расширением .dat и индексы в файлах .k01, k02 и т.д.? [Mono] Подскажите ide c# под linux чтобы компилировался файл для linux Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
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 и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|