Encoding.GetEncodings()
- это просто список всех доступных кодировок в системе. Вы не должны ожидать, что индекс с индексом 0 будет вашей системой по умолчанию. Используйте следующий код, чтобы получить кодировку, соответствующую вашей текущей культуре потока
Encoding.GetEncoding(Thread.CurrentThread.CurrentCulture.TextInfo.ANSICodePage)
Или, возможно, вы хотите использовать свойство EBCDICCodePage
, чтобы оно более соответствовало предоставленным вами кодировкам. Трудно сказать, не зная, для чего именно это нужно.
Я подозреваю, что вы на самом деле ищете текущую культуру
Thread.CurrentThread.CurrentCulture.DisplayName
а не кодировка, иначе почему бы вам просто не использовать UTF-8? Или, если вы ищете отображаемое имя культуры "ja-JP", то это должно сделать это
new CultureInfo("ja-JP").DisplayName