簡體   English   中英

將JSON中的特殊字符從android發送到PHP

[英]Send special characters in JSON from android to PHP

我想將JSON發送到服務器上的PHP文件,它工作正常,除非某些字段包含特殊字符(重音符號,ñ等)。

Java文件:

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(uri);

    JSONObject json = new JSONObject();

    try {
        // JSON data:
        json.put("id_u", viaje.getID_U());
        json.put("id_vo", viaje.getID_VO());
        json.put("titulo", viaje.getTitulo());
        [...]

        JSONArray postjson=new JSONArray();
        postjson.put(json);

        // Post the data:
        httppost.setHeader("json",json.toString());
        httppost.getParams().setParameter("jsonpost",postjson);

        // Execute HTTP Post Request
        System.out.print(json);
        HttpResponse response = httpclient.execute(httppost);

PHP文件:

$json = $_SERVER['HTTP_JSON'];
$data = json_decode($json);

$id_u = $data->id_u;
$id_vo = $data->id_vo;
$titulo = $data->titulo;
[...]

例如,如果titulo =“día”,則$ title為空,但是titulo =“ example”是否正常工作。 在發送郵件之前,我不知道如何轉換為utf-8,我嘗試了很多事情,但對我來說卻無濟於事。 任何想法?


編輯:

我可以解決問題。 顯然,問題出在編碼。 我通過在代碼中添加2行來解決:

Java文件:

// Post the data:
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
httppost.setHeader("json",json.toString());
httppost.getParams().setParameter("jsonpost",postjson);

PHP文件:

$json = $_SERVER['HTTP_JSON'];
$cadena = utf8_encode($json);
$data = json_decode($cadena);

謝謝你的幫助! :)

聽起來像是編碼問題。 嘗試像這樣設置編碼:

HttpPost httppost = new HttpPost(builder.getUrl());
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

您還可以像這樣對內容強制使用正確的編碼。 但是這里可能不需要:

// Add your data
httppost.setEntity(new UrlEncodedFormEntity(builder
     .getNameValuePairs(), "UTF-8"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM