首页 > 技术文章 > dedecms为什么文档标题最大长度只能显示二十个汉字呢?

lvjiefly 2016-08-20 14:46 原文

今天遇到文章标题无论怎么修改,超出二十个汉字不能全部保存,系统只截取前二十个汉字的内容进行保存。

在后台查看系统设置:

系统——其它选项——文档标题最大长度,的值是60,对应的数据库表字段char的长度也是60。

一个汉字占2个字节,按说应该能保存30个汉字才对,搜索后发现以下内容

原因分析:因为UTF-8编码1个中文汉字占用的是3个字节,GBK占用的是2个字节。

对应自己的织梦系统编码为UTF-8,那么60对应的就是20个汉字了。

于是将文档标题最大长度进行修改,如100

数据库dede_archives的title字段长度也改为100

这时在后台修改文章时,长度增加也依然可以成功保存了。

PS:搜到资料说有些同学按这种方法依然不能解决,于是留下其他解决方案

方法一、首先你要进入dedecms后台,系统——系统基本参数——其他选项——文档标题最大长度——在这修改为200或更大(其实200应该是足够了)。

方法二、进入phpmyadmin,点击dede_archives 进入表——title——点击编辑——输入200 (根据需要调整)

注意:对于使用虚拟主机来说,一般不能直接操作phpmyadmin,所以你只需要执行:系统——SQL命令行工具——输入语句:alter table dede_archives modify title varchar(
200) 这样就解决了,同时在调用的时候注意titlelen的数值大小 有网友提问,按照上述方法修改后,仍然无法显示全部 这时问题可能出现:一是模板问题,检查相应模板相应位置上是否使用了titlelen来限制字数, 第二,可能是CSS上控制问题,检查对应CSS文件的相应代码,是否在CSS文件上进行了长度或者宽度限制。 解决dedecms UTF-8首页文章标题显示字数太短的办法 原因分析:因为UTF-8编码1个中文汉字占用的是3个字节,GBK占用的是2个字节,所以,原先$titlelen = AttDef($titlelen,30)等于对大取30个字节,所以最多只显示11个汉字。 解决方法:进入dedecms的后台,在“模板管理”中的“标签源码管理",找到arclist.lib.php ,点击“编辑”,找到“$titlelen = AttDef($titlelen,30); ”条语句,把其中的30改为60或者更大的数值即可。当然你也可以在\include\taglib 这个目录中找到arclist.lib.php,然后同样的方法修改好,再传到你的空间。

你有没有遇到这种问题呢?

推荐阅读