drolbr / Overpass-API

A database engine to query the OpenStreetMap data.
http://overpass-api.de
GNU Affero General Public License v3.0
716 stars 90 forks source link

out:csv doesn't escape delimiter characters in values #611

Open ttomasz opened 3 years ago

ttomasz commented 3 years ago

Option out:csv doesn't properly escape delimiter characters.

If an object contains e.g. tab character in the name and the delimiter is tab you won't get quotes around the field value as expected.

Example query:

[out:csv(::id, name, leisure)][timeout:900];
(
  way(831409355);
);
out body;

Overpass Turbo link which yields:

@id name    leisure
831409355   Santuario de la Naturaleza  Isla Kaikué nature_reserve

2 tabs in header, 3 in row response should be:

@id name    leisure
831409355   "Santuario de la Naturaleza     Isla Kaikué"    nature_reserve
mmd-osm commented 3 years ago

Duplicate of #175

ronmacro commented 2 years ago

Shouldn't the escape character itself be handled here, e.g. if separator is \t use quotes for string to prevent broken csv files?

https://github.com/drolbr/Overpass-API/blob/38092640e457cc02fed5b8b0d16ed38e43490e1b/src/overpass_api/output_formats/output_csv.cc#L38