This is a major change. New tests were added and old tests all pass, but
there is still a chance of an incompatibility with some old behavior.
From the docs:
BINARY vs UNICODE
By default expanded templates and object arguments are bytes, not
Unicode characters. This does not mean that they cannot be used in
Unicode (or other encoding) web sites, but it does mean that objects
need to convert arguments and expansion results into characters
where and as needed.
Starting with version 1.48 it is possible to switch the engine
into returning perl characters from template expansion and for
passing characters in object arguments. This is achieved by setting
/xao/page/character_mode configuration parameter to '1'.
One exception allowing to retrieve byte data is when a template
is expanded with 'unparsed' qualifier. This is typically used to
pass binary data such as images and spreadsheets to objects such as
XAO::DO::Web::Mailer.
There is an important caveat for using 'unparsed' with binary data
in character mode. A template like the one below wou pass perl
characters in 'data' argument when executing Process.
<%Process
data={<%Page
path='/binary/data.bin'
unparsed
%>}
%>
There is no way to mix byte and character processing mode. Pick
one depending on your needs. Character mode allows a more natural
processing in Perl while byte mode allows more granular control over
the data flow.