2012-02-25 3 views
0

Я экспортировал документ Excel 2007 как CSV (разделенный точкой с запятой). Я использую CZECH office 2010 и чешские окна 7.Кодировка символов в .NET

Когда я читаю файл в .net C#, текст со специальными чешскими символами поврежден. Это когда я использую

что-то вроде строки [] lines = file.readalllines (path); (из System.IO.File)

Так что, я думаю, мне нужно специально обеспечить правильное кодирование, не так ли? поэтому я попытался:

string[] lines = File.ReadAllLines(path,encoding); 

кодирующих переменным было определен как

Encoding encoding = Encoding.UTF8 for example. 

Ни один из вариантов работали. И самое странное, некоторые из них, такие как Encoding.Unicode, даже бросили

IndexOutOfRandgeException 

.

Как исправить эту проблему с кодировкой? Спасибо.

BTW, мой офис умеет открывать и читать этот документ в правильном направлении.

+1

Вы должны узнайте и сообщите нам, что эти чешские символы закодированы (сохранены) в файле. –

ответ

7

Скорее всего, кодировка Excel, записанная вашим файлом, является кодировкой по умолчанию вашей системы, которая должна быть Windows-1250. Либо откройте файл с Encoding.Default, либо Encoding.GetEncoding("windows-1250"). Он работает для нас здесь, в Польше. Я не помню никаких проблем, связанных с доставкой csvs из офиса.

+0

Спасибо, ты действительно 1250, и по какой-то причине я думал, что это 1251. Теперь он работает с> Encoding.GetEncoding (1250). Однако, когда это кодировка по умолчанию, не работает File.ReadAllLines (путь), который должен использовать кодировку по умолчанию? И какие-либо идеи об этом индексе? Спасибо. –

+0

Не знаю. Возможно, ваша система не является чешской Windows или чем-то еще. В польских Windows 'Encoding.Default' и' Encoding.GetEncoding (1250) 'возвращает ту же кодировку. –

+0

'File.ReadAllLines (path)' не использует 'Encoding.Default', несмотря на возможное вводящее в заблуждение имя; он использует 'Encoding.UTF8'. – Joe

1

Кажется, я помню, ударяя это пару лет назад с CSV экспортируемые из Office Excel

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

В моем случае я считаю, что правильная кодировка была чем-то странным, как UTF7 (wtf), поэтому попробуйте это. В противном случае вы можете застрять перебор кодировки, пока она не декодирует правильно

Другой вариант заключается в поиск средств, предназначенных для обнаружения кодировки файла и запустить его над входом для определения кодировки

Смежные вопросы