Additional tip:
There are several boundaries where characters are converted from one
encoding to another. If you miss just one of them, pages will look funny:
file <-> Java
database <-> Java
HTTP <-> Java
It could happen that you store data and it looks good, but when you read
it will be messed up. It is hard to find such errors unless you check
Strings at the byte level, because System.out will also do conversion!