由于论坛整体格式为 GBK,而和微信服务端交互,必须为 UTF-8 编码,所以对接口编码进行了一部分的优化。
输出的情况下,有 error.php 下的 array_iconv() 函数,来对输出数组进行编码的转换。
static function array_iconv($str, $in_charset = "UTF-8", $out_charset = CHARSET)
{
if (is_array($str)) {
foreach ($str as $k => $v) {
$str[$k] = WmApiError::array_iconv($v, $in_charset, $out_charset);
}
return $str;
} else {
if (is_string($str)) {
// return iconv('UTF-8', 'GBK//IGNORE', $str);
return mb_convert_encoding($str, $out_charset, $in_charset);
} else {
return $str;
}
}
接受的情况下, 有 inc.php 下的 getDataForCharset() 函数来整合接受编码。
function getDataForCharset($data)
{
return (CHARSET != 'UTF-8') ? dhtmlspecialchars(WmApiError::array_iconv($data)) : dhtmlspecialchars($data);
}