设为首页收藏本站

Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3195|回复: 13

[新问题] 【已解决】Discuz! X3.4 UTF8 无法显示一些生僻字/古文/Emoji

[复制链接]
发表于 2018-7-19 14:23:21 | 显示全部楼层 |阅读模式
反馈BUG
程序版本: X3.3
浏览器: chrome 
版本状态: 全新安装
从哪个版本升级: -
BUG地址: http://www.discuz.net/forum.php?mod=post&action=newthread&fid=70
BUG截图:
测试用户名: -
测试密码:
本帖最后由 dztest123 于 2018-7-21 16:46 编辑

456.jpg

网 wang 的生僻字


搭建古文研究论坛,古文/生僻字,可以在编辑面板显示,证明字库里有这些字,但发帖之后显示空白,被DZ过滤掉了?


服务器信息


wert.jpg




用论坛搜索问题

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  UTF8 版并没有这一段代码,依然不能显示,实在无法解决,求助!!!



 楼主| 发表于 2018-7-21 13:13:18 | 显示全部楼层
本帖最后由 dztest123 于 2018-7-21 16:57 编辑

感谢,10楼,mingkong 大哥

问题成功解决了

让论坛支持4字节的utf8mb4编码,只需要使用notepad++,替换文件夹下一些数据即可

varchar(255) 字符全部替换为 varchar(243)

char(255) 字符全部替换为 char(243)
(6 + 255) * 4  > 1000 ,超过1000 ,故用(243)

'utf8'  字符全部替换为  'utf8mb4' (注意带'号,不是替换utf-8


数据库备份的sql文件,需要全部替换。


然后重装论坛,恢复数据库即可。


效果如下:


QQ截图20180721163359.jpg

回复

使用道具 举报

 楼主| 发表于 2018-7-19 14:25:40 | 显示全部楼层
&#132419;&#156285;&#156383;&#156270;
回复

使用道具 举报

 楼主| 发表于 2018-7-19 14:29:15 | 显示全部楼层
2222.jpg

http://www.discuz.net


官网论坛GBK显示乱码,但UTF8连乱码都没有。???
回复

使用道具 举报

 楼主| 发表于 2018-7-19 14:54:30 | 显示全部楼层
另求教,如何添加.ttf字体文件,添加字体使用自定义字体,替换掉当前字体,如:“把当前字,替换为甲骨文字体”。


目前WordPress有这个功能,DZ实在找不到相关资料,不知道是不是添加到upload\static\image\seccode\font\en    文件夹下有默认的.ttf,但不知道怎么弄,求助!!!
回复

使用道具 举报

发表于 2018-7-19 15:52:39 | 显示全部楼层
那教程说的就是X3.4删除了这段代码,而不是说X3.4有这段代码
回复

使用道具 举报

 楼主| 发表于 2018-7-19 16:26:04 | 显示全部楼层
本帖最后由 dztest123 于 2018-7-19 16:36 编辑
民审大大 发表于 2018-7-19 15:52
那教程说的就是X3.4删除了这段代码,而不是说X3.4有这段代码

亲爱的民审大大,我的意思是,有没有这段代码都不行的.
不知道UTF8版的DZ,是在那个位置把这些字过滤了,或不支持。


tyui.jpg

erty.jpg


参见:

http://www.baike.com/wiki/%25E7%25BD%2591





以上这些字GBK版还可以显示乱码,在UTF8版直接被吃掉。


清代陈昌治刻本『说文解字』

【卷七】【网部】网庖牺所结绳以渔。从冂,下象网交文。凡网之属皆从网。&#156280;,网或从亡。&#156383;,网或从糸。&#132419;,古文网。&#156271;,籒文网。文纺切〖注〗&#156285;、&#156270;,古文网。网,&#17231;。


回复

使用道具 举报

 楼主| 发表于 2018-7-19 17:13:28 | 显示全部楼层
自建php文件,使用utf-8可以正常显示,服务器不纯在问题。

vvvvvvvv.jpg


DZ会把生僻字及后面的所有字,通通吃掉
回复

使用道具 举报

 楼主| 发表于 2018-7-19 18:07:15 | 显示全部楼层
本帖最后由 dztest123 于 2018-7-19 18:19 编辑

3456.jpg



GBK 已解决,只是显示问题,UTF8 不适用 根本就发不出去
回复

使用道具 举报

 楼主| 发表于 2018-7-19 18:42:47 | 显示全部楼层

utf8 版本 按楼上更改后,发编码,如&#132419;&#156285;&#156383;&#156270; 可以显示。
但直接发字会被过滤掉,直接白板,不会PHP,求DZ程序员大大们解决

回复

使用道具 举报

发表于 2018-7-20 11:42:02 | 显示全部楼层
UTF8页面能显示这些文字,只是你的数据库保存不支持这些字符而已。
试试看把存储字段的字符集改成utf8mb4
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|Comsenz ( 粤B2-20090059-165 )  star

GMT+8, 2019-4-22 04:10

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表