I attach a new diff.
The changes are of the following sorts:
1. Simplify mention of dealing with nonprinting characters and different character sets, and add mention of libiconv.
2. Change mentions of zero to NULL.
3. Remove requirement that initialization of static storage that can change during execution be done explicitly, as no good reason has been given for this. (An alternative change would be to give a good reason.)
4. Remove mention of perror. One is going to want to use strerror (which is available since C89) or strerror_r most of the time, and perror does not actually make sense in this context, as it does not return the system error text, but directly outputs it.