环境:
  项目编码为gbk,PHP版本5.4...
问题:
  使用htmlspecialchars后汉字消失,成了空字符串
原因:
  编码问题,htmlspecialchars的默认编码不支持gbk
相关资料:
以下是手册中的一些说法:
UPGRADING说到
[html]
- the default character set for htmlspecialchars() and htmlentities() is 
  now UTF-8. In previous versions it was ISO-8859-1. Note that changing 
  your output charset via the php.ini default_charset directive does not 
  affect htmlspecialchars/htmlentities unless you are passing "" (an  
  empty string) as the encoding parameter to your htmlspecialchars/htmlentities 
  calls.  
手册中也说到
[html] 
string htmlspecialchars ( 
string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string 
$encoding = 'UTF-8' [, bool $double_encode = true ]]] ) 
[html] 
Defines encoding used in 
conversion. If omitted, the default value for this argument is 
ISO-8859-1 in versions of PHP prior to 5.4.0, and UTF-8 from PHP 5.4.0 
onwards. 
解决:
  修改默认编码(不支持gbk,所以只能用gb2312了)
$string = htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'gb2312');