发博文
九月枫叶

w3g8.blog.chinaunix.net

人生有如枫叶在秋风里也能红的灿烂Unix is simple. It just takes a genius to understand its simplicity <script src='http://s78.cnzz.com/stat.php?id=290707&web_id=290707&show=pic1' language='JavaScript'    
个人资料
  • 博客访问:1104056
  • 博文数量:376
  • 博客积分:10056
  • 博客等级:上将
  • 注册时间:2005-04-21 21:19:26
订阅我的博客
  • 订阅
  • 订阅到鲜果
  • 订阅到抓虾
  • 订阅到Google
字体大小: 博文
分类: dedecms


4月8日在http://www.utf8cms.cn/下载了dedecms4的UTF8改版,应该是基于dedecms4的rc1版改的吧.在自己站应用时发觉不少问题.特记录下来

在dedecms4的utf8改版中,发布文档时可能出现:
更新数据库archives表时出错,请检查!

把数据保存到数据库archives表时出错,请检查!
以上两种情况分别为修改和新增,对应的php为
article_eidt_action.php和article_add_action.php,数据库操作为include/pub_db_mysql.php,中文字符串截取为

include/inc_functions.php中的cn_substr函数,此函数只支持双字节即gbk编码,所以要改成截取utf-8的.此时edit已正常,但add还出错,把
if(!$dsql->ExecuteNoneQuery()){
   $dsql->Close();
   ShowMsg("把数据保存到数据库archives表时出错,请检查!","-1");
   exit();
}
改成
if(!$dsql->ExecuteNoneQuery()){
   $errorSql = htmlSpecialchars($dsql->queryString);
   $errorMsg = htmlSpecialchars(mysql_error());
   $dsql->Close();
   //ShowMsg("把数据保存到数据库archives表时出错,请检查!","-1");
   //ShowMsg是document.write的js方法,不知为什么在加入$errorSql后不显示,所以用echo
   echo "把数据保存到数据库archives表时出错,请检查!查询语句:<br /> $errorSql <br /> mysql错误提示: <br /> $errorMsg ";
   exit();
}
看提示是keywords字段长了,原来是中文分词时出错,include/pub_splitword_
www.php调用字典include/data/dede_wwwdic.csv,可csv是gbk编

码的.改分词程序没成功,所以不分词了,关键字手工填就是了.把article_add_action.php中的

//自动获取文章中的关键字
//----------------------------------
if($autokey==1||$keywords==""){

改成
//自动获取文章中的关键字
//----------------------------------
if(0 && ($autokey==1||$keywords=="")){


发布文档后的成功提示无法显示,
把include/win_templet.htm中
charset={dede:cfg_language/}改成
charset=utf-8

更新html那个框架中的字乱码,在浏览器中选utf8就行,但不知在哪个文件中改

图片栏目如果选分页显示,会在第2页开始图片上方有一行字:分页标题#e#,找不到在哪改,因此修改

dede/templates/default/article_iamge.htm,把
<td align="center" id="imgbody">{dede:field name='imgurls'/}

改成
<td align="center" id="imagePageBody">{dede:field name='imgurls'/}
<script>
var imagePageBody = document.getElementById('imagePageBody');
imagePageBody.innerHTML = imagePageBody.innerHTML.replace('分页标题#e#', '');
</script>
也就是用js把这串字符替换

dede/article_eidt.php有错误,没有定义SelectTemplets函数,所以不能选择模板,在页面上方的js中把这个函数加上
function SelectTemplets(fname)
{
  var posLeft = window.event.clientY-200;
  var posTop = window.event.clientX-300;
  window.open("../include/dialog/select_templets.php?&activepath=<?=urlencode($cfg_templets_dir.'/plus')?>&f="+fname,

"poptempWin", "scrollbars=yes,resizable=yes,statebar=no,width=600,height=400,left="+posLeft+", top="+posTop);
}

程序的一些bug:
1.article_eidt.p,hp编辑选模板有js错误,并且无法在ff中使用这个函数,因为不支持window.event
2.栏目如果是频道列表,生成页后子频道的文档无法在该页显示,进入子频道才能看到
3.图片栏目如果选分页显示,会在第2页开始图片上方有一行字:分页标题#e#,不知是UTF-8改的原因还是bug
4.图片栏目修改文档后,最后一页没重新生成?选生成文档HTML才搞定
5.UTF8部分,分词和拼音还无法解决,生成html的提示乱码,一定要手工指定编码为utf8
6.图片栏目中生成缩略图有问题.好在不会在列表页显示出错
7.文章栏目中GIF图片似乎都无法生成缩略图?
8.dede/inc/writer.txt和dede/inc/source.txt都应该设成可写
9.两个广告紧连着会出问题,如{dede:myad name='abc'/}和{dede:myad name="efg" /}连着,后一个就会显示成文字.只有分开
10.在本地测试时安装在非根目录下,首页连接用cfg_cmspath正确,上传到网站后,这儿改成空,页面中这儿竟然被解析成当前目录

[发评论] 评论 重要提示:警惕虚假中奖信息!
  • chinaunix网友 2010-10-07 13:27
    呵呵 不错 小弟收益匪浅啊 我网站就遇到这个问题了 看了这个帖子就解决了 qq伤感网名站 有兴趣的可以来看看啊
  • chinaunix网友 2007-12-19 21:46
    感谢你提供的一些解决办法。 更新html那个框架中的字乱码,在浏览器中选utf8就行,但不知在哪个文件中改 这个问题可在makehtml_list_action.php文件大概6行位置添加echo "";解决。
  • chinaunix网友 2007-11-15 10:19
    把改好的提供一份下载吧! http://blog.wyk.net.ru
亲,您还没有登录,请[登录][注册]后再进行评论