Currently we support only a small set of encodings. This is because of testing.
Ultimately since we just feed through the encoding name to Java/ICU, we should remove any checking that enforces just a subset of the encoding names, and allow any encoding name through to the underlying Java/ICU. If that rejects the name, then we don't support it, but otherwise there's no reason for us not to support it.
Encodings have this average and max bytes per character. If those are equal and integer, then we know the encoding is fixed-width, otherwise it's variable width.
We could put in just 1 unit test to be sure say, basic EBCDIC encoding is supported. (Encoding name is "ebcdic-cp-us". If this works without the name ebcdic-cp-us appearing anywhere in our code base, then we know any valid encoding name would work.