Кодировка .NET.Альтернатива по умолчанию в wxWidgets?

#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. Это отлично работает!