在多数情况下使用javascript的encodeURIComponent对传的字符串编码后使用get或post发送到服务器端不会有问题,但是碰到“——”(打开中文输入法输入"-"减号)字符,在服务器端使用iconv转换为gb2312码就会将“——”后的字符全部丢弃。不知各位有什么方法解决这问题(除掉把服务器端改utf-8编码方法)?

解决方案 »

  1.   

    $s=iconv('UTF-8', 'gb2312//IGNORE' , $string);  
      

  2.   

    http://plog.longwin.com.tw/my_note-programming/2010/01/14/javascript-encodeuri-component-utf-8-2010
      

  3.   

    用gb2312是自己找麻烦,纯utf8可以避免很多编码烦恼
      

  4.   

    感谢楼上的回答1楼 答案是似乎不太完美,iconv('UTF-8', 'gb2312//IGNORE' , $string)是丢弃了iconv不能转化的字符2楼 网址没有解决只是解释了encodeURIComponent函数3楼 不能确定客户使用的编码因此还是要考虑的看看还有没有更好的答案。
      

  5.   

    <script type="text/javascript" language="javascript" charset="utf-8"></script>
      

  6.   

    试试mb_convert_encoding 要先开发扩展库php_mbstring.dll 
    <?php 
    $str = mb_convert_encoding($str, "gb2312", "UTF-8");
    ?>
      

  7.   

    to楼上:我没说明白,就是让客户选择使用什么编码。另:找到一个完美解决方案mb_convert_encoding($_POST['logcon'], "GB2312", 'UTF-8');不会忽略“——”
    结贴。