написание французского символа в CSV-файлах в C # - PullRequest
6 голосов
/ 23 января 2012

У меня есть файл dbf, который имеет MONTRÉAL в качестве одного из входов. Я должен преобразовать этот DBF-файл в CSV-файл.

Для этого я читаю этот файл dbf, используя Драйвер Microsoft Visual FoxPro драйвер, затем преобразуя преобразование каждой строки в запятую , а затем записывая все строки в файл с именем "ASD .csv».

Но в CSV-файле MONTRÉAL отображается как MONTR?AL, то есть вместо É появляется символ ?. Я пытался использовать кодировку UTF8 при записи строк в CSV-файл, но даже это не сработало.

Пожалуйста, помогите.

Ответы [ 3 ]

5 голосов
/ 23 января 2012

вы должны использовать определенную кодировку. для французского это iso-8859-1 или windows-1252.

Encoding.GetEncoding("iso-8859-1")
1 голос
/ 23 января 2012

Я предлагаю вам использовать кодировку UTF8 следующим образом:

    using (StreamWriter writer = new StreamWriter("asd.csv", false, Encoding.UTF8))
    {
        writer.WriteLine("Id;City");
        writer.WriteLine("1;Montréal");
        writer.WriteLine("2;Québec");
    }

Это добавит спецификацию ( Byte Order Mark ) к началу CSV, и вы сможете затем открыть файлнепосредственно в Excel или даже в стандартном блокноте Windows.

1 голос
/ 23 января 2012

Моя реализация несколько лет назад использовала:

var writer = new StreamWriter(fileStream, Encoding.Unicode);
writer.Write(csvContent.ToCharArray());

Я полагаю, это должно работать, поскольку в нашем приложении поддерживается довольно много языков, включая японский.Блокнот, Блокнот ++, Excel, LibreOffice ...

И хорошее объяснение UTF8, Unicode и других отличий кодировки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...