Специальные символы преобразуются в "?" при импорте из CSV
Привет,
Я столкнулся с проблемой при импорте специальных символов из листа excel.
Специальные символы включают в себя (¡¢£¤ ¥/¦©ª "«°±23μ ¶ *1º " »àáâããåæçèéëìíîïðñòóôõö × øùúüýþßàáâãåæçèéëìíîïðñòóôö ÷ øùúüüýþ)
Я использую streamreader для импорта этого текста, и ни один параметр не передается в streamreader, поэтому по умолчанию используется UTF-8.
После импорта специальный Чатер отображается как "?".
Где Кодировка.По умолчанию передается в качестве параметра streamreader специальный устав, отображающий свойства.
Но я наткнулся на этот пост msdn, в котором говорится о кодировке.Глухоту использовать не рекомендуется.
https://msdn.microsoft.com/en-us/library/system.text.encoding.default(v=против 110).aspx
Делает Кодирование.Значение по умолчанию может измениться в 2 разных системах и будет ли оно обрабатывать специальные символы из другого языка?
Мой код выглядит примерно так:
FileStream fs = новый fileStream(sFileName,FileMode.Открой,FileAccess.Читай,Файлообменник.Чтение и запись);
StreamReader sw = новый StreamReader(fs);
Строка sbuf = sw.ReadLine();
Когда я читаю csv-файл, содержащий вышеупомянутые специальные символы, значение sbuf отображается как ?
Он прекрасно работает, когда я использую Streamreader, как это.
StreamReader sw = новый StreamReader(fs,кодировка.По умолчанию);
Я просто хочу знать, будут ли какие-то проблемы, если я использую кодировку.По умолчанию.
Как он ведет себя, если приходит еще несколько символов с другой кодовой страницы. Приводит ли это к потере данных?
Может ли кто-нибудь поделиться своими мыслями по этому поводу?
Richard MacCutchan
Я подозреваю, что символы вообще не изменяются, но ваши приложения не используют шрифт, необходимый для их отображения.
NavyaKrishna51
Привет Ричард,
Можете ли вы предложить тип кодировки, который мне нужно использовать для отображения специальных символов
Richard MacCutchan
Нет, потому что я не знаю, какими должны быть персонажи. А если вы не знаете, то вам нужно спросить того, кто создал этот файл.
Sergey Alexandrovich Kryukov
- Нет, Ричард.
При неправильном шрифте он будет показывать поле для непечатаемого символа. '?' указывает на то, что некоторые символы, закодированные в Юникоде, пытались интерпретировать как не-Юникод, и в момент возврата к Юникоду фактические символьные данные уже были потеряны. Пожалуйста, смотрите решение 1.
—СА
Richard Deeming
Почему бы не узнать название кодировки, которая Encoding.Default
возвращает на ваш компьютер, где он работает, а затем явно использует эту кодировку в своем коде?
NavyaKrishna51
Кодирование.По умолчанию возвращается кодовая страница 1252.
Если я явно использую 1252, то как насчет символов из разных кодовых страниц?