如何在url中发送unicode值而不更改?

时间:2015-12-30 14:07:28

标签: php unicode

我的一个PHP短信应用程序我试图发送unicode字符,但它会在我的短信中给出一些不需要的字符。但是当我尝试通过直接网址发送时,它会给我完美的结果。我完全混淆了如何在我的应用程序中实现。

我的应用程序代码生成在url下面


function sendMsg($message,$contactNo) 
    { 

            $ch = curl_init();
        $rno = urlencode(utf8_encode($contactNo));
        $txt = urlencode(utf8_encode($message));
        $txt=preg_replace('/%0A/',"", $txt);

                curl_setopt($ch,CURLOPT_URL,"http://sms.*****.com/reseller/sendsms.jsp?user=****&password=****&mobiles=******&sms=$txt&senderid=******&unicode=1"); 


        $buffer = curl_exec($ch);
        curl_close($ch);
                if($buffer==FALSE){
                    return FALSE;
                }else{
                    return TRUE;

                }
    }

我得到的价值是txt =%E5%BC%95%E3%81%8D%E5%89%B2%E3%82%8A

直接网址

http://sms.*****.com/reseller/sendsms.jsp?user=****&password=****&mobiles=******&sms=ಯುನಿಕೋಡ್&senderid=******&unicode=1

1 个答案:

答案 0 :(得分:0)

PHP字符串是 bytes 。因此$message包含以某种编码方式编码的文本。

仔细查看utf8_encode的文档,它仅在输入字符串编码为ISO-8859-1时有效。该字符集不能对拉丁文以外的脚本中的文本进行编码,例如“ಯುನಿಕೋಡ್”。

所以你必须知道在$message中用什么编码来编码字节。我们无法从您的示例代码中分辨出来。如果它已经是UTF-8,则删除对utf8_encode的呼叫。否则,您需要一个转换函数,您还可以在其中指定输入字符串的编码,例如iconv