AJAX传递中文参数时的编码问题

自己写网页都是UTF-8编码的,AJAX传递中文参数没任何问题。最近做一个chrome的插件,原网页是GB2312的,通过jquery.ajax传递参数后都会自动变为UTF-8编码,后台php处理会出现一些问题。这里用iconv函数进行编码转换。

$string= $_POST['string'];
$title = iconv('utf-8','gbk',$string);

mysql数据库设置了gbk编码也会输出时存在乱码的问题,在连接时设置编码。

$dbh = new PDO('mysql:host=localhost;port=3306;dbname=data;charset=gbk', 'root', '');

chrome插件

花了一晚上做了一个chrome的插件,还是比较简单的,一个配置文件加上几个js文件就能实现,而且可以使用jquery,相当的方便。

因为有继续教育的网上考试,每年都要做,每次都有很多同时找我帮忙做,多了也比较烦。所以就想做一个插件啥都解决了。思路很简单,点击题号,通过ajax提交题目到收集好的题库获得答案,再回显到题目后方,没有做自动答题的功能。对网页内容操作需要用content_scripts,其他的api都还没去了解,功能已经实现。

ajax上传--uploadify

uploadify是一个基于jquery的ajax上传组件,很方便,功能很强大。搞不懂最新的3.0beta版,正式版是2.1.4的,基于jquery-1.4.2,文档比较齐全,使用还是比较简单的。下载解压后把文件放入网站的某个目录下,在需要添加下载组件的页面内添加:

<link href="./core/up/uploadify.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="./core/jquery.js"></script>
<script type="text/javascript" src="./core/up/swfobject.js"></script>
<script type="text/javascript" src="./core/up/jquery.uploadify.v2.1.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $('#file_upload').uploadify({
        'uploader'  : './core/up/uploadify.swf',
        'script'    : './upload.php',
        'cancelImg' : './core/up/cancel.png',
        'folder'    : './data',
        'buttonText': 'ADD Plugin',
        'auto'      : true,
        'onComplete':function(event, ID, fileObj, response, data){
          alert(response);
        }
    });
});
</script>

上传文件框为:

 <input id="file_upload" name="file_upload" type="file" />

这里http://www.uploadify.com/documentation/有详细的说明。

用geshi+ajax实现代码高亮--实现篇

首先,需要下载geshi,在http://qbnz.com/highlighter/,下载后解压上传到合适的位置(我的放在common目录里面,位置随意放,但要记住)。
其次,新增2个文件:(都位于common目录下,如果前面的geshi放到位置不一样,注意code.php的的include路径)
1、code.php--实现接收代码,用geshi处理并返回结果

parse_code();

?>

2、HiLightCode.asp--放入ajax代码,实现传送代码并回显代码处理结果(全是javascript代码)




最后,改动3个文件:
1、在ubbcode.asp中增加(大约位于259行左右)

re.Pattern = "\[code=(.[^\]]*)\](.*?)\[\/code\]"
Set strMatchs = re.Execute(strContent)
For Each strMatch in strMatchs
Dim lang,code,rnd_ID,rndID_t,rndID_c,Code_hi,Code_nm
lang=strMatch.SubMatches(0)
code=strMatch.SubMatches(1)
Randomize
rnd_ID = Int(100000 * Rnd)
rndID_t = "Type"& rnd_ID
rndID_c	=	"Code"& rnd_ID
Code_hi="

显示: 高亮"
Code_nm=" | 普通
" strContent = Replace(strContent,strMatch.Value,"
"""〈&""〈&" 代码

"&Code_hi & Code_nm &"

"&code&"
") NEXT

2、在pj根目录下的article.asp和default.asp文件中加入文件引用(加在最后的footer.asp前,否则会引起IE下边栏显示问题)

  
  

使用很简单,跟以前添加代码一样,只需注明代码类型就可以了,例如:
[code=asp][/code]

这只是粗略实现这个效果,具体可能有些地方还有待改进
HiLightCode.asp、ubbcode.asp、code.php三个文件打包下载
点击下载此文件