Tapestry reads tml files in XMLTokenStream.openStream(), does some doctype "magic" and writes all the file content's into a ByteOutputStream. On T5.3 reading/writing was done using the system's caracter encoding. With T5.4 that was changed for the reader but not for the writer. This messes up all non-ascii characters if system encoding is not utf-8.
PrintWriter writer = new PrintWriter(bos);
PrintWriter writer = new PrintWriter(new OutputStreamWriter(bos, "UTF8"));
TODO: Unit test for XMLTokenStream (follows soon)