PHP-URL参数含汉字的传输编码问题

今天在做项目的时候需要用到从URL里面获取中文参数,结果怎么调试都不行汗~~

我先是统一调整了文件的格式,还是不行,实在不行怎么办?

那就不理他了~~全部统一转换成一种吧,上网招了一下还真的现成的函数提供,立马抄下来。

测试一下,汗,还是不行,怎么办?

想想算了,代码没办法实现,那就看看系统提供了功能没有,一查,哈,还真的有~

修改了一下,编码正确了~~代码如下哈:

下面这个是我调用的路径哈

http://…./shop/view/member/flash_opt.php?sMid=1&act=insert&no=1&sjl=第一次测试哈

下面是自动调整编码的函数哈(来源:PHP自动识别字符集并完成转码):

//识别汉字编码,因为YBlog用的是utf-8,如果引用通告发过来的是gb2312的编码的话,需要可以识别并完成编码转换  
function safeEncoding($string,$outEncoding = ‘UTF-8’)  
{  
    $encoding = “UTF-8”;  
    for($i=0;$i<strlen($string);$i++)  
    {  
        if(ord($string{$i})<128)  
            continue;  
 
        if((ord($string{$i})&224)==224)  
        {  
            //第一个字节判断通过  
            $char = $string{++$i};  
            if((ord($char)&128)==128)  
            {  
                //第二个字节判断通过  
                $char = $string{++$i};  
                if((ord($char)&128)==128)  
                {  
                    $encoding = “UTF-8”;  
                    break;  
                }  
            }  
        }  
        if((ord($string{$i})&192)==192)  
        {  
            //第一个字节判断通过  
            $char = $string{++$i};  
            if((ord($char)&128)==128)  
            {  
                //第二个字节判断通过  
                $encoding = “GB2312”;  
                break;  
            }  
        }  
    }  
      
    if(strtoupper($encoding) == strtoupper($outEncoding))  
        return $string;  
    else 
        return iconv($encoding,$outEncoding,$string);  
}

然后在需要的地发调用这个函数哈~~这样还不会正确,还需要做多一步,就是下面的红色代码哈,代码如下:

   ……
   mysql_query(‘set names UTF8’); //这儿是最关键的哈~
    $result = mysql_query(“insert into choujiangjilu(s_member_id,runtime,meno,no_id) values(“.$sMid.”,unix_timestamp(),\”” . safeEncoding($jl,’UTF-8′) . “\”,”.$no_id.”)”);
   ……

到此测试通过哈~~~有问题记得互相交流哈~

发表评论