如何将url中的阿拉伯语文本作为参数从android app发送到php webservice

时间:2015-03-27 19:51:45

标签: php android

我想在我的Android应用程序中添加搜索功能,但问题是当我将uric参数添加到url例如(“example.com?q=بلد”)时,它会给出null结果。虽然如果我在浏览器中手动添加文本到url它可以正常工作。

        InputStream inputStream = null;
        String contentAsString = null;
        try {
            URL url = new URL("example.com?q=بلد");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.connect();
            inputStream = conn.getInputStream();
            contentAsString = readIt(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

PHP代码

    header('Content-Type: text/html; charset=utf-8');

    mysql_select_db($this->get_databaseName(), $this->con);
    mysql_query("SET NAMES 'utf8'");
    mysql_query('SET CHARACTER SET utf8');

    $query="Select * from tbl_posts where post_title=".$_GET['q']";

数据库表字段编码方法是utf8_general_ci

简单来说,我想在url中添加一些阿拉伯语文本作为参数,通过它我可以使用php web服务查询数据库。

3 个答案:

答案 0 :(得分:2)

在向服务器发送此类特殊字符时,您需要在URLEncoder.encode(your_input," utf-8")的帮助下编码此类输入,并在接收此类数据时首先需要在URLDecoder.decode的帮助下解码它(your_data," utf-8")

答案 1 :(得分:0)

我认为你必须在发送之前对你的查询进行url编码。 像这样:

字符串查询= URLEncoder.encode(“بلد”,“utf-8”);

网址网址=新网址(“example.com?q=”+查询);

答案 2 :(得分:0)

我在Zesshan khan回答的帮助下解决了这个问题

最终代码是

Adnroid内

   String str=بلد;
   str=URLEncoder.encode( str, "utf-8")  
   URL url = new URL("example.com?q= "+str);

PHP

  header('Content-Type: text/html; charset=utf-8');

...

 mysql_select_db($this->get_databaseName(), $this->con);

 mysql_query("SET NAMES 'utf8'");

$result=uldecoder($_GET["data"]);

$query="Select * from tbl_posts where post_title=".$result.";