У меня есть входной файл в кодировке UTF-8. Мне нужно использовать часть его содержимого и создать из него CSV-файл в кодировке ISO-8859-15.
Проблема в том, что в UTF-8 есть несколько символов для двойных кавычек, которые автоматически заменяются символом "
(= Кавычка U+0022) при записи CSV-файла на диск.
Те, что мы нашли, это:
- Левая двойная кавычка U+201C
- Правая двойная кавычка U+201D
- Двойная нижняя 9-кавычка U+201E
- Буква-модификатор Double Prime U+02BA
- Объединение двойной вертикальной линии над U+030E
- Полноширинные кавычки U+FF02
Преобразование происходит автоматически, когда я пишу в файл CSV следующим образом:
using (StreamWriter sw = new StreamWriter(workDir + "/files/vehicles.csv", append: false, encoding: Encoding.GetEncoding("ISO-8859-15")))
{
foreach (ad vehicle in vehicles)
{
sw.WriteLine(convertVehicleToCsv(vehicle));
}
}
Метод convertVehicleToCsv
экранирует двойные кавычки и другие специальные символы данных, но не экранирует специальные символы двойных кавычек UTF-8. Теперь, когда двойные кавычки заменяются автоматически, файл CSV больше не соответствует RFC-4180 и поэтому поврежден. Чтение с использованием нашей библиотеки CSV не удается.
Итак, вопрос:
Какие другие символы UTF-8 автоматически заменяются/преобразовываются в «обычный» символ "
при преобразовании в ISO-8859-15? Это где-то задокументировано? Или я что-то не так здесь делаю?