似乎有不少朋友在下在BlogEngine 1.0的源代码之后会发现居然无法正确编译,因为{SiteRoot}\User Controls\CommentView.cs里的代码遇到了错误:

public void RaiseCallbackEvent(string eventArgument)
{string[] args = eventArgument.Split('?);string author = args[0];string email = args[1];string website = args[2];string country = args[3];string content = args[4];// ...
}

嗯?第一行代码为什么单引号没有封闭?作者怎么会把一个无法编译的版本发布出去呢?其实问题并非那么简单,不过我们姑且先将单引号补全吧。
编译,通过。进入任意一篇文章。咦,为什么又出现脚本错误了(如下),问题真多啊……
打开客户端的代码一看,果然有错误:
function AddComment()
{// ...var argument = author + "? + email + "? + website + "? + country + "? + content;// ...
}

哎,为什么……又是引号没有配对,而且又出现问号了?不如上官方网站[url]http://www.dotnetblogengine.net[/url]看看吧。
官方网站其实也用了Blog Engine,但是进入查看文章页面后却没有发生问题。找到AddComment方法一看,果然!
function AddComment()
{// ...var argument = author + "¤" + email + "¤" + website + "¤" + country + "¤" + content;// ...
}

问题出现了,就是这个古怪的字符“¤”坏了事。由于我们的编辑器无法识别出这个字符,因此就将它和后面的引号一起变成了问号。那么,到底这个符号是做什么用的呢?我们又该如何修改它呢?
经过简单的代码分析(猜测?)就可以发现,这段代码的作用是使用AJAX方式添加评论,那个古怪的字符“¤”的作用是分隔一些信息。因为在添加注释时,作者名、Email、URL、国家和评论内容会拼接成一个字符串并作为body给post到服务器端去,所以需要一个在这些文字中都不出现的字符(串)来作为分隔符。服务器端的代码也出现了问题,也就是因为它需要使用这种特殊字符拆分客户端post过来的内容。
要解决它自然很简单,我们只需要使用一段不会出现在文字中的字符(串)即可。我不希望再用这种特殊的字符,因此我最终将两段代码改成了如下模样:
public void RaiseCallbackEvent(string eventArgument)
{string[] args = eventArgument.Split(new string[] { "?/?/?" }, StringSplitOptions.None);string author = args[0];string email = args[1];string website = args[2];string country = args[3];string content = args[4];// ...
}

function AddComment()
{// ...var argument = author + "?/?/?" + email + "?/?/?" + website + "?/?/?" + country + "?/?/?" + content;// ...
}

我使用“?/?/?”替换了那个特殊字符,只要用户在回复评论时不输入这段字符串就好了。
上周我在移植我的英文blog系统时也遇到过,幸好没有多久就顺利地解决了这个问题。目前我的英文blog系统[url]http://blog.jeffzon.net[/url]使用的便是Blog Engine 1.0,我在源代码的基础上也作了一些简单的修改,增加了一些功能。例如像博客园在首页显示Description的做法,大家访问我的英文blog时可以发现,系统首页上并没有完整的文章内容,而是有选择地显示了文章的Description,并添加了“read more...”链接。这样的做法似乎更合理一些,抑或是我已经习惯博客园了?:)

©著作权归作者所有:来自51CTO博客作者jeffz的原创作品,如需转载,请与作者联系,否则将追究法律责任
问题 解决 方案 Ajax & Atlas相关

0

分享

微博 QQ 微信

收藏

上一篇:StyledAutoComple... 下一篇:深入JavaScript与.NE...
jeffz

238篇文章,49W+人气,0粉丝

Ctrl+Enter 发布

发布

取消

推荐专栏更多

微服务技术架构和大数据治理实战

大数据时代的微服务之路

共18章 | 纯洁微笑

¥51.00 669人订阅

订   阅

基于Python的DevOps实战

自动化运维开发新概念

共20章 | 抚琴煮酒

¥51.00 430人订阅

订   阅

猜你喜欢

我的友情链接 扩展LINQ to SQL:使用Lambda Expression批量删除数据 VM虚拟机常见问题之-虚拟机操作系统安装问题 undefined reference问题总结 VM虚拟机常见问题之三-- 虚拟网卡问题 关于usr/bin/ld: cannot find -lxxx问题总结 VM虚拟机常见问题之四-虚拟机上网问题 部署vCenter Server的一些经验与问题 字符编码详解——彻底理解掌握编码知识,“乱码”不复存在 centos7.0 没有netstat 和 ifconfig命令问题 关于jquery获取input的value问题 使用iconv命令轻松实现linux下字符集编码的转换 智能合约编程语言-solidity快速入门(下) Android中适配器的notifyDataSetChanged()为何有时不刷新 如何在Spring Boot中使用Hibernate Natural ID 从hook开始聊聊那些windows内核数据结构 Scala的actor 正则性能调优 windows下kafka+ELK的日志系统 Nginx下,请求本机另外Host很慢

扫一扫,领取大礼包

0

分享

jeffz

转载于:https://blog.51cto.com/jeffz/59881

BlogEngine 1.0中的编码问题及解决方案相关推荐

  1. USB3.0中的8/10b编码技术详细解释

    USB3.0在Physical layer中定义了超速USB的信号传输技术,在其中最关键的就是引入了8/10b编码技术,如下图中的红色部分. 8/10b编码和解码的的流程如下图所示,在编码时将ABCD ...

  2. 成功将BlogEngine 1.5 升级到了BlogEngine 2.0

    使用BlogEngine.Net博客系统有两年时间了.官方的最新版本已经出到了2.5.但它是基于.net4.0的.也就是说服务器必须安装.net4.0,运行环境必须选择4.0.出于移植性的考虑.我决定 ...

  3. ADO.NET 2.0 中的架构

    Bob Beauchemin DevelopMentor 适用于: Microsoft ADO.NET 2.0 Microsoft Visual Studio 2005 C# 编程语言 摘要:了解在 ...

  4. .Net 2.0 中的发送邮件实现小解(轉)

    记得原来在.Net 1.X中编写发送邮件的代码是使用操作系统的CDO组件中的CDO.Message来来实现的,因为这个里面可以实现SMTP服务器认证等一序列的发送邮件的详细功能,不过不管是什么错误都会 ...

  5. ASP.NET2.0中的全球化与本地化UICulture,Culture

    ASP.NET2.0中的全球化与本地化UICulture,Culture 来源:转载 日期:2007-2-28 14:59:01 阅读:324 评论:0   一.简介 全球化和本地化是每一位开发者在创 ...

  6. 在Struts 2.0中国际化(i18n)您的应用程序

    国际化是商业系统中不可或缺的一部分,所以无论您学习的是什么Web框架,它都是必须掌握的技能. 其实,Struts 1.x在此部分已经做得相当不错了.它极大地简化了我们程序员在做国际化时所需的工作,例如 ...

  7. 如何解决http封包中gzip编码的html

    1.什么是gzip gzip编码,最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩.我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的. ...

  8. python2中的unicode_在python2中的编码

    在python2中的编码 #_author:star #date:2019/10/29 ''' 字符编码: ASCII:只能存英文和拉丁字符, gb2312:只能6700中文,1980年 gbk1.0 ...

  9. 用 for/in 在 Java 5.0 中增强循环

    http://www.ibm.com/developerworks/cn/java/j-forin.html 简介: for/in 循环通常叫作 增强的 for 或者 foreach,它是 Java ...

最新文章

  1. (C++)变长数组vector的常见用法
  2. 搭建及训练py-R-FCN遇到的问题
  3. SAP UI5 使用 Smart Control 的一个具体例子
  4. chromebook刷机_您可以购买的最好的Chromebook,2017年版
  5. android webview测速,学习分享,echarts模拟宽带测速效果 附Demo演示地址!!
  6. waring Release版本
  7. python开源项目2019_2019年6月Github上最热门的Python开源项目
  8. python local global_Python 变量作用域 LEGB (上)—— Local,Global,Builtin
  9. java day24【Stream流、方法引用】
  10. shell-一些有趣的使用
  11. 史上最简单的上传文件到linux系统方法
  12. java简单小程序 生日快乐,微信生日祝福小程序,要一个祝朋友生日快乐的VB小程序。...
  13. 动态网页抓取数据软件
  14. 【路径规划】基于狼群算法之三维路径规划matlab源码
  15. Linux驱动开发|USB驱动
  16. JAVA实现FTP上传与下载
  17. 彻底理解connection timeout
  18. R语言学习笔记5_参数的假设检验
  19. 手机word文档docx密码忘了怎么办,忘记word文档docx密码怎么办?
  20. 工作感想——离开公司

热门文章

  1. 五个超酷Linux命令
  2. 创建数据库时指定编码方式
  3. VIM中空格和TAB的替换 [转]
  4. HLG 1539 选课
  5. 数据中心虚拟化不是IT变革的终点
  6. Mocha BSM产品亮点——策略管理
  7. ExecuteScalar()如何返回整数
  8. 抽象语法树 Abstract syntax tree
  9. nVidia多显卡多GPU在Linux下的超频设置
  10. jQuery 技术揭秘