Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It's not just ID, there's also mandatory fields after that, separated by a semicolon. Thus 'ID;P' would be a valid header for SYLK and e.g. for German "CSV"s. If CSV would stick to commas (and boohoo, just escape more fields when this causes locale issues), then even such overly simple heuristics would've sufficed, wouldn't it?

Although you'd just run into other pathetic cases with such an informal format (CSV, not SYLK). But hey, I need to interchange formats with some IT guys and don't have a big IT department (ready) and they don't want to parse XLS(X), so I just use CSV. Now you have two problems.



"ID;P" is valid at the start of CSV as well. Fields are allowed to contain semicolons.


Depending on locale.

I believe in the Canadian French locale (and maybe many other locales), ";" is considered a separator (a "," equivalent).


Sure, but mhd was saying that if we stuck to CSV being actually comma-separated, "ID;P" would distinguish CSV from SYLK. I'm saying that it wouldn't.


mhd doesn't say that:

Thus 'ID;P' would be a valid header for SYLK and e.g. for German "CSV"s.


"If CSV would stick to commas ... then even such overly simple heuristics would've sufficed, wouldn't it?"


Ah, thanks. Apparently, mhd knew and forgot :-)

The problem of discriminating between csv and SYLK files is unsolvable, as every file with only ASCII characters and no commas or quotes is a valid csv file (with one column) and there are valid SYLK files in that set.


In the general sense, yeah, but you would think it shouldn't be too hard to make a reasonable guess about which one it is and handle failures gracefully instead of assuming that it's SYLK based on a tiny amount of data and then blowing up when it turns out not to be.


Valid, but not nearly as likely to run into by accident.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: