Great tool Steffen.
I have another option for you - the new JREPL.BAT
version 7 features (currently v7.4), can also be used to transform a text file from one encoding to another. I believe it is more restrictive on which character sets can be used because it only supports your machines native code page, plus UTF-16LE, plus code pages that have valid internet character set names. EDIT - Actually it is not that bad. Here is a page that lists code pages along with there internet (.NET) names. Most of the code pages have a valid name
Here is an example that transforms 1252 to UTF-8:
jrepl "^" "" /f "source.txt|Windows-1252" /o "destination.txt|UTF-8"
But JREPL has a significant advantage in that you can provide custom transformations for source characters that do not exist in the target character set. This could satisfy Sasso's "custom character set" request. This is probably easiest to accomplish by using the JREPL /T option.
One thing that is pretty cool is that with the /X option, you can specify a character using the \xnn escape sequence, where nn is the hexadecimal byte code for the relevant character set. Within a search string it uses the input character set. Within a replacement string it uses the output character set. The \xnn sequence only works properly if the character set is a single byte character set.
With the /T "FILE" option, you can place all your search terms in one file, one per line, and all your replacement (transform) terms in a 2nd file. This helps prevent out of control command line lengths. Another cool feature is you can specify that the search file matches the input character set, and the replacement file matches the output character set.
There is no need for the transformations to involve just single characters. One input character can be transformed into multiple output characters, and vice versa.
Here is an example of what a custom transformation could look like (without specifying the actual custom transformations)
jrepl "1252to1250find.txt|Windows-1252" "1252to1250repl.txt|Windows-1250" /x /t file /f "source.txt|Windows-1252" /o "destination.txt|Windows-1250"