The problem seems not to be with HTML::Entities:
> perl -MHTML::Entities=decode_entities -e "print length decode_entiti +es('社論')" 2
As you've been told before, you will need to find out what encoding the browser uses to send your input data to your script. This is not necessarily easy to enforce. One good approach is to use <meta http-equiv="Content-Type" ... tags on every HTML page, no matter where it is served from.