Vincent Lefevre wrote:

But both of these solutions have the drawback of working only in
UTF-8 locales.

Not at all; '[[:error:]]' would match a single-byte encoding error in the current locale. The tz database is interested in UTF-8 so it sets the LC_ALL environment variable to a UTF-8 locale, but that setting shouldn't be required in general.

Also, the tz database needs grep patterns that iconv doesn't support. For example, one rule is that commentary (which starts with #) can contain UTF-8 characters, but the ordinary data (before the #) is limited to a smaller set. This is captured by the command:

grep -Env '^[ordinarycharset]*(#.*)?$'

where 'ordinarycharset' is the set of ASCII characters in ordinary tz data. Here it's useful that '.' does not match encoding errors on GNU/Linux.



Reply via email to