{"id":37557145,"url":"https://github.com/guiorgy/strictcsv","last_synced_at":"2026-01-16T09:01:03.104Z","repository":{"id":219118569,"uuid":"747683092","full_name":"Guiorgy/StrictCSV","owner":"Guiorgy","description":"A recration of the CSV specification under much stricter guidelines to simplify parsing and serialization","archived":false,"fork":false,"pushed_at":"2025-11-15T22:52:05.000Z","size":16,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T06:58:12.234Z","etag":null,"topics":["csv","csv-format","specification"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Guiorgy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-24T12:41:25.000Z","updated_at":"2025-11-15T22:52:09.000Z","dependencies_parsed_at":"2024-01-25T15:45:23.473Z","dependency_job_id":"bcbaa5c2-2328-4b53-b42f-c1cdf166533c","html_url":"https://github.com/Guiorgy/StrictCSV","commit_stats":null,"previous_names":["guiorgy/strictcsv"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Guiorgy/StrictCSV","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guiorgy%2FStrictCSV","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guiorgy%2FStrictCSV/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guiorgy%2FStrictCSV/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guiorgy%2FStrictCSV/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Guiorgy","download_url":"https://codeload.github.com/Guiorgy/StrictCSV/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guiorgy%2FStrictCSV/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv","csv-format","specification"],"created_at":"2026-01-16T09:00:56.490Z","updated_at":"2026-01-16T09:01:02.971Z","avatar_url":"https://github.com/Guiorgy.png","language":"C#","readme":"# Strict CSV\n\nA recration of the CSV specification under much stricter guidelines to simplify serialization and deserialization.\n\n## Goal\n\nThe aim of this format is to be (de)serializable without user intervention. Unlike CSV, which allows for different delimiters, string delimiters, encodings and formats, Strict CSV defines strict format guidelines, which completely remove the guesswork when importing/exporting data.\n\nThe secondary aim is to have a format that is relatively easy to (de)serialize, especially when performance is not critical.\n\nHuman readibility is not accounted. This format is only meant to be used by machines for information exchange.\n\nThis was partly inspired by the [WSV](https://dev.stenway.com/WSV/Specification.html) (Whitespace Separated Values) format, however, this format aims to be more familiar to those used to the CSV format, and more performant (at serialization/deserialization) at the expense of human readibility.\n\n## Specifications\n\n- [Encoding](#encoding)\n- [Values](#values)\n- [Rows](#rows)\n- [Header](#header)\n- [Compact](#compact)\n- [File Extension](#file-extension)\n- [Example](#example)\n- [Changelog](#changelog)\n\n### Encoding\n\nOne of the following encodings must be used:\n\n- UTF-8\n- UTF-16 (Big Endian)\n- UTF-16 Reversed (Little Endian)\n- UTF-32 (Big Endian)\n- UTF-32 Reversed (Little Endian)\n\nAll encodings, except for UTF-8, must include a preamble (BOM - Byte Order Mark) indicating the used encoding. UTF-8 may include BOM, but it is not required. If BOM is missing, UTF-8 is the assumed (default) encoding.\n\n### Special Characters\n\n- Line Feed\n  - Abbreviation: `LF`\n  - Character: `\\n`\n  - Unicode: `U+000A`\n  - ASCII\n    - Decimal: `10`\n    - Hexadecimal: `0x0a`\n- Carriage Return\n  - Abbreviation: `CR`\n  - Character: `\\r`\n  - Unicode: `U+000D`\n  - ASCII\n    - Decimal: `13`\n    - Hexadecimal: `0x0d`\n- Comma\n  - Character: `,`\n  - Unicode: `U+002C`\n  - ASCII\n    - Decimal: `44`\n    - Hexadecimal: `0x2c`\n- Double Quote\n  - Character: `\"`\n  - Unicode: `U+0022`\n  - ASCII\n    - Decimal: `34`\n    - Hexadecimal: `0x22`\n\n### Values\n\nEach non-null value must be surrounded by double quote characters. The contained double quote characters must be written as an escaped sequence of two double quote characters.\n\nMultiline values must use a single carriage return character to delimit each line. The line feed character and its combinations with the carriage return character are not supported.\n\nEmpty values not surrounded by double quote characters are treated as `null` values, which differ from empty strings (`\"\"`).\n\nValues must be delimited by a single comma character.\n\n### Rows\n\nEach row is delimited by a single line feed character. The carriage return character and its combinations with the line feed character are not supported here.\n\nThe last row must not end with a delimiter.\n\n### Header\n\nThe first line must contain the header with column titles in the same format as normal rows. All following rows must include the same number of values per row and the header.\n\n### Compact\n\nThe formatted data must be 'compact' and minimal, in other words, there must be no extra characters between commas and (double quoted) values (such as white spaces), between rows, before and after the header and last row, and etc.\n\nComments are not supported.\n\n### File Extension\n\nThe default file extension is `.scsv`. If the OS doesn't support extensions longer than 3 characters, `.ssv` can be used.\n\n## Example\n\nFor visualizing, the line feed and carriage return characters have been replaced with the LF and CR strings respectively.\n\n```csv\n\"Value Type\",\"Example\"LF\n\"Normal\",\"something or another\"LF\n\"Contains Double Quotes\",\"\"\"The way to get started is to quit talking and begin doing\"\" -Walt Disney\"LF\n\"Multiline\",\"first lineCRsecond lineCRthird line\"LF\n\"Empty String\",\"\"LF\n\"Null\",\n```\n\n## Changelog\n\n### 0.1.0\n\nFirst draft of the `Strict CSV` format Specifications.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguiorgy%2Fstrictcsv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguiorgy%2Fstrictcsv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguiorgy%2Fstrictcsv/lists"}