Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
 Аватар для SuperAgent007
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70

Греческие буквы в названии файла

12.08.2015, 18:02. Показов 3730. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть файл в кодировке ISO8859-7 в котором построчно хранятся названия файлов которые необходимо прочитать. В названиях этих файлов встречаются спецсимволы (π; μ; ρ). Проблема в их не корректном чтении или в открытии файлов.

Использую ifstream для работы с файлами, и getline для чтения из файла.

При выводе в консоль "пи" превращается в "p" и т.д.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.08.2015, 18:02
Ответы с готовыми решениями:

Греческие буквы в консольном приложении
Интересует возможность в консольной программе выводить на экран греческие буквы, такие как лямбда, альфа, бета и тому подобные. ...

Иероглифы в названии файла
Нашёл в интернете код, вытаскивающий файлы из ресурсов проекта: void Extract(WORD wResId, LPWSTR text, LPWSTR lpszOutputPath) { ...

Проверка на существование файла с русскими символами в названии
Здравствуйте. Работаю над программой для шифрования файлов. Основную работу сделал, осталось прописать только этот момент. Мне нужно...

47
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.08.2015, 04:03
Студворк — интернет-сервис помощи студентам
Всё таки C#

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
using System;
using System.IO;
using System.Text;
 
namespace FileInOut
{
    class Program
    {
        static void Main(string[] args)
        {
            Encoding encoding = Encoding.Unicode;
            string text_out = "We are what we repeatedly do.\nExcellence, then, is not an act, but a habit.\nΑριστοτελης";
            File.WriteAllText(@"Ελλαδα.txt", text_out, encoding);
 
            Console.OutputEncoding = encoding;
            string[] text_in = File.ReadAllLines(@"Ελλαδα.txt", encoding);
 
            foreach (string line in text_in)
                Console.WriteLine(line);
  
            System.Console.ReadKey();
        }
    }
}
Пишет Unicode текст в файл с названием в Unicode, считывает все обратно и даже выводит на консоль, которую тоже можно заставить показывать Unicode (!).
Миниатюры
Греческие буквы в названии файла  
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.08.2015, 04:05
То же - для других кодировок.
Текущую кодировку можно получить из свойства StreamReader.CurrentEncoding
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 05:00
Цитата Сообщение от IrineK Посмотреть сообщение
и даже выводит на консоль, которую тоже можно заставить показывать Unicode (!).
У меня, на этой строчке, необработанное исключение ("Необработанное исключение типа "System.IO.IOException" произошло в mscorlib.dll. Дополнительные сведения: Параметр задан неверно."):
C#
1
Console.OutputEncoding = encoding;
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.08.2015, 05:28
Цитата Сообщение от lss Посмотреть сообщение
У меня, на этой строчке, необработанное исключение
windows 7 (eng)
Сборка в VS 2013 Community - работает
Сборка в VS 2010 Ultimate - работает

windows 7(rus)
Сборка в VS 2010 Ultimate - работает

Ищите проблему у себя.

Внизу - код как есть, с греческими символами.
Миниатюры
Греческие буквы в названии файла  
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 05:33
Цитата Сообщение от IrineK Посмотреть сообщение
Ищите проблему у себя.
Конечно, у кого же ещё?
Вот так работает:
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
using System;
using System.IO;
using System.Text;
 
namespace FileInOut
{
    class Program
    {
        static void Main(string[] args)
        {
            Encoding encoding = Encoding.Unicode;
            string text_out = "We are what we repeatedly do.\r\nExcellence, then, is not an act, but a habit.\r\nμπλθΩ";
            File.WriteAllText("∆∑ξ₤µΩ∞.txt", text_out, encoding);
 
            Encoding encoding_2 = Encoding.UTF8;
            Console.OutputEncoding = encoding_2;
            string[] text_in = File.ReadAllLines("∆∑ξ₤µΩ∞.txt", encoding);
 
            foreach (string line in text_in)
                Console.WriteLine(line);
 
            System.Console.ReadKey();
        }
    }
}
Миниатюры
Греческие буквы в названии файла  
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.08.2015, 05:40
Тогда в строке 11 сразу для всего укажите
C#
1
Encoding encoding = Encoding.UTF8;
и пользуйте )
1
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 09:23
Цитата Сообщение от lss Посмотреть сообщение
Да.
В VS 2015 не работает.
По логике, вообще компилироваться не должно - конструктор требует const char* или const string&
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 09:28
Цитата Сообщение от Dani Посмотреть сообщение
В VS 2015 не работает.
Сомневаюсь. Как имя файла в код вставляешь?
Цитата Сообщение от Dani Посмотреть сообщение
По логике, вообще компилироваться не должно - конструктор требует const char* или const string&
Цитата Сообщение от tnk500 Посмотреть сообщение
в реализация стандартной библиотеки от микрософт содержит констркторы для wchar_t*.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 09:42
Цитата Сообщение от Dani Посмотреть сообщение
В VS 2015 не работает.
VS 2015
Миниатюры
Греческие буквы в названии файла  
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 09:47
Цитата Сообщение от Dani Посмотреть сообщение
По логике, вообще компилироваться не должно - конструктор требует const char* или const string&
...
Миниатюры
Греческие буквы в названии файла  
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 11:20
Цитата Сообщение от lss Посмотреть сообщение
...
Нестандартное расширение.
В G++ не компилируется совсем.
Standard 27.9.1.7
explicit basic_ifstream(const char* s, ios_base::openmode mode = ios_base::in);
explicit basic_ifstream(const string& s, ios_base::openmode mode = ios_base::in);
basic_ifstream(basic_ifstream&& rhs);
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 11:23
Цитата Сообщение от Dani Посмотреть сообщение
Нестандартное расширение.
Кто-то спорит?
Цитата Сообщение от tnk500 Посмотреть сообщение
реализация стандартной библиотеки от микрософт содержит констркторы для wchar_t*. Думаю, ТС пользуется другим компилятором
Цитата Сообщение от Dani Посмотреть сообщение
В G++ не компилируется совсем.
У ТС тоже не компилируется (читай начало темы).
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 11:28
lss, хорошо, с этим разобрались.
Как правильно символ тогда вставлять? Может быть в настройках проекта что-то не то.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 11:34
Цитата Сообщение от Dani Посмотреть сообщение
Как правильно символ тогда вставлять? Может быть в настройках проекта что-то не то.
Как правильно - понятия не имею, могу только рассказать, как я делал. Вставлял символ юникода в название файла (открывал Таблицу символов, там есть выбрать - копировать), потом файл Переименовать, Копировать, и вставлял в код имя файла.
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 11:41
lss, увы, так тоже не получилось.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 11:45
Цитата Сообщение от Dani Посмотреть сообщение
увы, так тоже не получилось.
Я в чудеса, в программировании, не верю. Раз у меня получается, то и у тебя должно получаться.
Не получается что, конкретно?
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
13.08.2015, 11:45
Цитата Сообщение от IrineK Посмотреть сообщение
Всё таки C#
Проблема не в языке, а в Венде.
Около 20-ти лет назад индустрия ИТ осознала, что за границами СШП тоже есть компьютеры и система должна работать с различными наборами букв, в т.ч. в именах файлов и каталогов. Еще лет через пять основная масса диструбутивов ввела в той или иной степени поддержку Юникода и программистам стало возможно работать с различными символами прозрачно, независимо от языка программирования, версии компилятора и т.д.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <string.h>
 
int main() {
  FILE *f= fopen ("files.txt", "r");
  if (!f) return -1;
  char s[80];
  while (fgets (s, 80, f)) {
    printf (s);
    s [strlen(s)-1]= 0;
    FILE *f_= fopen (s, "r");
    if (!f_) continue;
    while (fgets (s, 80, f_)) printf ("\t%s", s);
    fclose (f_);
  }
}
files.txt:
αρχείο_1
αρχείο_2

αρχείο_1:
χορδή 1
χορδή 2
χορδή 3

αρχείο_2:
Строка 1
Строка 2

Вывод программы:
αρχείο_1
  • χορδή 1
  • χορδή 2
  • χορδή 3
αρχείο_2
  • Строка 1
  • Строка 2

У менеджеров из Редмонда, видимо, особое видение ситуации.
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 12:06
lss,
Миниатюры
Греческие буквы в названии файла  
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 12:24
Файл где лежит?
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 12:25
lss, там где исходники.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2015, 12:25

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

В текстовом файле t записаны буквы латинского алфавита и цифры. Занести в текстовый файл h из текстового файла t только латинские буквы.
В текстовом файле t записаны буквы латинского алфавита и цифры. Занести в текстовый файл h из текстового файла t только латинские буквы.

Builder xe2 + SQLite + русские буквы в названии файла базы
Названия файла базы данных задется в Edit. При использовании русских букв, вместо них в названии файлов оказываются вопросики в ромбах...

Греческие буквы не отображаются на других ПК
В моей программе решаются ряд уравнений. Для лучшего понимания этих уравнений я присвоил ряду переменных имена с использованием греческих...

Вывести греческие буквы в richTextBox
Добрый день! Возник следующий вопрос - можно ли каким-то образом в выводе (например, в richTextBox) добавить какую-нибудь греческую букву,...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru