In PHP if you want to avoid double-encoding you simply pass false to the htmlentities() function like so:
This will output & instead of &amp; i.e. the string is not double encoded.
To achieve the same result with Java and Apache Commons Lang StringEscapeUtils all you have to do is:
That's simple after you see it! Just unescape the string first, then escape it. That will take care of any already encoded entities and will avoid double encoding.