There's a difference between "unassigned codepoint", represented as
(<code> nil), and "codepoint mapping to character with that codepoint",
represented by the absence of an entry in the exceptions list. Simply
testing for trueness of (cadr (assoc <code> exceptions)) isn't good
enough; test for trueness of (cdr (assoc ...)) and use the car if so.
* undefined codepoints as the first exception:
If the first exception to code<->byte is an undefined character, as for
example in iso-8859-8, the lowest-code exception was computed wrongly,
leading to incorrect encoding.