感谢您的回复,我把您在那个帖回复的内容转发过来
GBK 字符集原本就不支持此类特殊符号,过去 Discuz! 使用了一些特殊方法来兼容,但是会引起潜在的问题,新版中停用了这些方法。
要获得对 Unicode 字符集的完整支持,建议使用 UTF-8 版本的 Discuz!。
如果你不考虑安全问题,打开 source\function\function_core.php 删除红色部分代码
function dhtmlspecialchars($string, $flags = null) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = dhtmlspecialchars($val, $flags);
}
} else {
if($flags === null) {
$string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);
if(strpos($string, '&#') !== false) {
$string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', $string);
}
} else {
if(PHP_VERSION < '5.4.0') {
$string = htmlspecialchars($string, $flags);
} else {
if(strtolower(CHARSET) == 'utf-8') {
$charset = 'UTF-8';
} else {
$charset = 'ISO-8859-1';
}
$string = htmlspecialchars($string, $flags, $charset);
}
}
}
return $string;
}
我之前用的是X3.4 20171001版gbk,确实有这段代码。请问是这样的吗,gbk本身支持日文但不支持韩文,将这些特殊字符转换成unicode编码,然后再存入数据库对吗?
韩文转成unicode编码是由浏览器完成的吧?这样出现安全隐患是怕把恶意代码存入对吗?
如果把x3.4 gbk版转成utf-8,请问以前那些帖中的韩文还能正常显示吗?
|