Why Play escapes many characters?

Because Play uses org.apache.commons.lang.StringEscapeUtils.escapeHtml. I think it should be replaced with Commons Lang 3.x.

% sbt
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
[info] Set current project to default-7cb4b4 (in build file:/Users/kzys/hello/)
> console
[info] Starting scala interpreter...
[info]
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_29).
Type in expressions to have them evaluated.
Type :help for more information.

scala> org.apache.commons.lang.StringEscapeUtils.escapeHtml("\u3041")
res0: java.lang.String = ぁ

scala> org.apache.commons.lang3.StringEscapeUtils.escapeHtml4("\u3041")
res1: java.lang.String = ぁ

scala>

Play already has a pull request to upgrade Commons Lang.