|
|
Чтение файла CSV
Kobol, RomanYS, Fish, Irbis, АгентБезопаснойНацио, Мультук, Baiji, shuhard, hunter76, Builder, Умный Слоненок, d4rkmesa, Shalun, aka MIK, Silgis, H A D G E H O G s, Garykom, zenik, Vstur, Гена, Dotoshin, banco, Karamzin, Толич, Timon1405, nick86, Philix, unenu, maxar, Prog_man, arsik, p-soft, Fedor-1971, Lama12, Михаил Козлов, Жеглофф, ЯнСмит, Homer, Lazy Stranger, ryutao, Гипервизор, KJlag, obs191, MWWRuza, ДенисСмирнов, Kigo_Kigo, Greeen, Страждущий, Caesar, maxab72, Волшебник, NorthWind
| ☑ |
|
0
Shalun
naïve
10.02.26
✎
10:00
|
Парни, всем привет. Столкнулся с такой бедой:
Читаю файл CSV, с разделителем пробел, всего 4 колонки
ТД.ПолучитьСтроку(НомерСтроки)
Все строки читает нормально, но в некоторых строках значение 2й колонки берет в кавычки. Вроде проблема в файле, но никаких косяков не видно. Сохраняется в xls нормально и читается потом с него то же нормально. А вот с csv - беда какая то.
Может кто сталкивался с такой проблемой, подскажите что не так, где "копать" нужно?
|
|
|
1
Fedor-1971
10.02.26
✎
10:04
|
(0) посмотри на проблемные строки через HEX редактор, может, в них есть непечатные символы
И, хорошо бы, показать кусок кода обработки строки
|
|
|
2
Shalun
naïve
10.02.26
✎
10:16
|
(1) Спасибо! Да, HEX редактор показал кавычки, но почему их не видно в файле? Нечитаемые кавычки?:-)
И заметил такую вещь, что в кавычки он берет те строки (колонки), где имеется хоть одна кавычка. Это наверное уже вопрос к редактору а не 1с. но если подскажете как так получается - буду благодарен!
|
|
|
3
Fedor-1971
10.02.26
✎
10:41
|
(2) Чисто предположение: последовательность 0A0D эквивалентна в винде Символы.ПС, а для линукс достаточно одного 0D.
Т.е. возможно, что файл подготовили в другой ОС или в другой кодовой системе, например, UTF-8 и кавычка экранируется предыдущим символом для просмотра, а при чтении 1С выкупила правильную кодировку и прочитала кавычку
|
|
|
4
Garykom
гуру
10.02.26
✎
10:44
|
Так ты не через ёксель файлы то смотри а напрямую как текст
Для CSV по стандарту в кавычки берутся все строковые значения со служебными символами
И да правильная работа с CSV средствами 1С довольно сложна, когда файлы сложные
Тупо читать через разделитель низзя
В строковых значениях внутри могут быть как " " так и "," или ";" или даже """
|
|
|
5
arsik
гуру
10.02.26
✎
10:51
|
Придумали бы уж какой ни будь стандартный символ - разделитель CSV :)
|
|
|
6
Garykom
гуру
10.02.26
✎
10:58
|
(5) так его сразу придумали в стандарте wiki:TSV
:)
|
|
|
7
Garykom
гуру
10.02.26
✎
10:58
|
|
|
|
8
Garykom
гуру
10.02.26
✎
11:01
|
(5) Фишка в том что CSV придуман для передачи и в 7 битных кодировках
И в чисто текстовых, где банально нет "лишних" символов
Поэтому приходится использовать только существующие
Так то оно вполне логично, если есть служебные символы в строковом значении - экранируем их и берем все значение в кавычки
Для записи легко реализовать
А вот для чтения нужен конечный автомат, но реализация простая
|
|
|
9
Fish
гуру
10.02.26
✎
11:13
|
(6) (7) Хм, получается, что если приходит CSV с разделителем ";", то это на самом деле не CSV, а DSV.
|
|
|
10
Irbis
10.02.26
✎
11:28
|
А уж когда в csv многострочный текст прилетает, да ещё со спецсимволами типа ; и " внутри, приходится в разборах и такую ересь учитывать.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший