#c #encoding #wxwidgets #default
#c #кодирование #wxwidgets #По умолчанию #c
Вопрос:
Мне нужно прочитать файлы с разными кодировками. Файлы Unicode правильно считываются с помощью
wxFileInputStream fileInputStream(dialog->GetPath());
wxTextInputStream textInputStream(fileInputStream);
Если мне нужно прочитать, скажем, кириллические (cp1251) файлы, я использую:
wxFileInputStream fileInputStream(dialog->GetPath());
wxTextInputStream textInputStream(fileInputStream, " n", wxCSConv(wxFONTENCODING_CP1251));
Но ни один из этих способов не работает с обоими типами файлов. В .NET мы можем просто использовать:
new StreamReader(file, Encoding.Default)
Итак, какова альтернатива кодирования.По умолчанию в wxWidgets или в C в целом?
Спасибо
Ответ №1:
Я полагаю, что wxFONTENCODING_SYSTEM был бы аналогичен Encoding.По умолчанию.
Комментарии:
1. @Alex, я считаю, что кодировка. По умолчанию «работает» только потому, что MS играет с данными. Смотрите большое предупреждающее сообщение здесь: msdn.microsoft.com/en-us/library /… . wxWidgets, вероятно, играет безопаснее, смотрите Здесь: docs.wxwidgets.org/trunk /…
Ответ №2:
Проблема была решена с помощью wxConvAuto(wxFONTENCODING_SYSTEM)
вместо wxCSConv(wxFONTENCODING_SYSTEM)
. Функция wxConvAuto сначала пытается прочитать файл как документ в формате Unicode, а затем, если это не удается, использует системную кодировку для чтения файла ANSI. Это отлично работает!