|
Убрать некорректный символ из файла
| ☑ |
0
Мелифаро
29.11.17
✎
13:42
|
Есть ситуация - из интернет-банкинга выгружаются платежки в формате 1С. Вроде бы все замечательно, однако они не загружаются. Выяснил, почему - в назначении платежа в случайных местах строки ставится символ LF (без CR). Блокнот, что характерно, этого перевода строки не видит и визуально все замечательно, выявил косяк через Notepad++.
При прочтении файла через ТекстовыйДокумент() 1С по какой-то причине заменяет эти одиночные LF на CR LF, в результате чего в тексте появляются ненужные переносы строк, ломающие структуру формата файла.
Вопрос - есть ли какой-то иной способ чтения файла (ИзвлечениеТекста не предлагать, там UTF-8 не поддерживается), не искажающий изначальный набор байт вместе со спецсимволами? Ну, чтобы эти одиночные LF убрать, а потом уже с текстом работать...
|
|
1
Fragster
гуру
29.11.17
✎
13:49
|
(0) не заменяет, а интерпретирует как новую строку. сделай СтрЗаменить(Текст, Символ(10), "") // ну, или 13 :)
и будь счастлив
|
|
2
SSSSS_AAAAA
29.11.17
✎
13:54
|
(0) Сначала замени все LF на какой-нить спецсимвол, который в тексте точно не встречается, а потом сочетание этого символа с CR замени на CRLF. Той же СтрЗаменить().
|
|
3
SSSSS_AAAAA
29.11.17
✎
13:55
|
(2) А потом спецсимвол на пустую строку.
|
|
4
Fragster
гуру
29.11.17
✎
14:27
|
(2) да пофиг, текстовыйдокумент что #10#13, что #13, что #10 будет воспринимать как перевод строки
|
|
5
Мелифаро
30.11.17
✎
05:07
|
(1)(2) Проблема в том, что 1С при чтении через ТекстовыйДокумент() сама вместо одиночного LF подставляет CR LF. То есть в прочитанном файле уже этих "одиночных" LF нет. А в исходном - есть. Такая вот ерунда.
|
|
6
Мелифаро
30.11.17
✎
05:34
|
+(5) То бишь да, в (1) верно, она интерпретирует LF как CR LF безусловно. Вопрос в том, есть ли способ извернуться и прочитать файл побайтно как он есть без лишних интерпретаций?
|
|