But as written, the definition permits generating the weird output. Which ignores the other arm of Postel's principle.
You could have the format definition forbid these characters; and then in the section about Postel's principle have "If you choose to accept forbidden characters, you MUST treat them as '?'".
Comments
Postel's principle: By liberal in what you accept... It means that the tool won't crash just because there's weird input.
But as written, the definition permits generating the weird output. Which ignores the other arm of Postel's principle.
You could have the format definition forbid these characters; and then in the section about Postel's principle have "If you choose to accept forbidden characters, you MUST treat them as '?'".
Isn't it better to crash than to fail silently, possibly storing malformed data?
Known as "Fail early, fail loudly".
https://en.wikipedia.org/wiki/Fail-fast