经过测试,"" '' // ?? 《》<>《》:;‘”,。、?!@#¥%……&×()!@!@等特殊符号能存入数据库也能取出。
#¥%……&*()和#$%^&*()无法存入数据库,这是啥原因啊?

解决方案 »

  1.   

    你用的是什么数据库?起码不是 mysql
      

  2.   


    是mysql...
    我刚才直接去写sql语句发现可以插#但是插'的确不行,单数的'都会有错,双数的'才行,要加/才行。
    另外纠正下我插#的时候不是插不进去,是插进去一个空的。
      

  3.   

    我在php里给变量都加了check,用了addslashes转义,现在'可以插入了
    现在不能插入数据库的是#和&,数据库里取到的是空值。
    肯定是因为URL的问题。大家有谁知道什么原因么?
      

  4.   

    JS里用到URL的地方。这里我输入#那么content=#
    //alert(content);
    var url = 'insert.php?author='+author+ '&imgurl=' +imgurl+ '&content='+content;
    //alert(url);
    doAjax(url);
    PHP里取content会有一个undefined的警告,然后content的值是空的。
      

  5.   

    用utf-8编码。什么都可以放!
      

  6.   


    header('Content-Type:text/html;charset=UTF-8');
    已经用了
      

  7.   


    set names "utf8";
    并且表啥的都设置成utf8
      

  8.   


    一定可以。实在不行就贴出sql出来大家瞧瞧
      

  9.   


    我贴个测试代码吧!
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>无标题文档</title>
    <script type="text/javascript">
    var get = {
    byId: function(id) {
    return typeof id === "string" ? document.getElementById(id) : id
    }
    };var xmlhttp;
    function createXHR()
    {
    try
    {
    xmlhttp=new ActiveXObject("Msxm12.XMLHTTP");  //支持不同浏览器版本,下同
    }
    catch(e)
    {
    try
    {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e)
    {
    try
    {
    xmlhttp=new XMLHttpRequest();
    if(xmlhttp.overrideMimeType)
    {
    xmlhttp.overrideMimeType("text/xml");
    }
    }
    catch(e){}
    }
    }
    if(!xmlhttp)
    {
    return false;
    }
    }//发送请求
    function doAjax(url)
    {
    //alert("Here we are!"+url);
    createXHR();
    xmlhttp.onreadystatechange=requestAjax;
    alert("Here we are!"+url);
    xmlhttp.open( "GET", url , true );
    alert("Here we are!"+url);
    xmlhttp.send( null );

    //加延迟
    //window.setTimeout(function(){xmlhttp.send( null );},1);

    //alert("Here we are!");
    }//取得请求
    function requestAjax()
    {
    if(xmlhttp.readyState==4)
    {
    if(xmlhttp.status==200)
    {
    //显示发布成功
    document.getElementById('statue').innerHTML = xmlhttp.responseText;
    }
    }
    }function send(){
    var oConBox = get.byId("conBox");
    var content = oConBox.value;
    var url = 'test1.php?url='+content;
    alert(url);
    doAjax(url);
    }
    </script>
    </head><body>

    <input id="conBox" name= "conBox" /> <input id="sendBtn" type="button" onclick="send()" />

    <div id="statue"> </div>
    </body>
    </html>
    <?php 
    header('Content-Type:text/html;charset=UTF-8');//避免输出中文乱码,linux下不需要

    $url = $_GET['url'];

    echo $url;
    ?>
    这个是自己写的测试代码,输入框输入正常的内容下面会AJAX显示输入的内容。
    而AJAX要用到URL传值,PHP就GET不到URL里出现的#、&和+
    尤其#出现的话后面再跟别的也不能显示了,+后面的还能显示。这个问题怎么解决啊。我要GET到这些特殊符号。
      

  10.   

    将url进行下编码,然后再请求?例如url_encode()
      

  11.   

    PHP就GET不到URL里出现的#、&和+那肯定就要用编码啦....搞半天是这里.
      

  12.   


    在js传值时要把'#'替换成'%23'~
    if ( content == '#' ) content = '%23';
    var url = 'insert.php?author='+author+ '&amp;imgurl=' +imgurl+ '&amp;content='+content;
      

  13.   

    也或者
    var url = 'insert.php?author='+author+ '&imgurl=' +imgurl+ '&content='+content.replace("#", "%23");
      

  14.   

    楼主昨日得知托福分数太过悲痛。一狠心直接睡了。早上起来研究了下JQUERY。然后用了JQUERY就不存在特殊字符的问题了。仔细想了下应该是JQUERY封装的机制考虑到了这些就做了处理。自己原来的AJAX代码并没有对这方面有很好的处理。不过我也试了下,原来直接写的AJAX代码只要输入的东西拿过来编一下码就可以了。var content = encodeURIComponent(oConBox.value);
    总结一下JQuery确实好用。像楼主这样花了一天时间纠结在这个问题上。很多人上手就用JQUERY可能根本不会碰到这种问题。
    谢谢大家啊!!!