MySQL PHP JSON пустой текст - PullRequest
       1

MySQL PHP JSON пустой текст

2 голосов
/ 28 февраля 2012

Я нашел проблему с некоторыми результатами поиска по БД. Когда в некоторых полях есть дополнительные символы, такие как «ü», поле возвращается как нулевое, поэтому оно отображается как нулевое в поиске. Мой код такой: Скрипт php

 $q=mysql_query("SELECT * FROM PRODFAR WHERE ARTI LIKE '%".$_REQUEST['search']."%'");
    while($e=mysql_fetch_assoc($q))
            $output[]=$e;

    print(json_encode($output));

    mysql_close(); 

конструктор JSON PARSER:

public class JsonParser {
    static InputStream is = null;
    static JSONObject json_data = null;
    static String result = "";

    // constructor
    public JsonParser() {
    }

    public  JSONArray getJSONFromUrl(ArrayList<NameValuePair> nameValuePairs, String url) {

        //http post this will keep the same way as it was (it's important to do not forget to add Internet access to androidmanifest.xml
        InputStream is = null;
        String result ="";
        JSONArray jArray = null;
        try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

        }
        catch(Exception e){
            Log.e("log_tag", "Error in http connection "+e.toString());
        }

        //convert response that we receive from the php file into a String()
        try{


            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();
        }catch(Exception e){
            Log.e("log_tag", "Error converting result "+e.toString());
        }

        // try parse the string to a Json object
        try {
            //json_data = new JSONObject(result);
            jArray = new JSONArray(result);


        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        // return Json String
        return jArray;

    }    
}

Любой намек на то, как я могу решить это?

обновление: пока я не могу передать его с JSON, потому что он допускает только символы UTF-8. Я думаю, что одно из возможных решений - преобразовать текст через PHP в архив кодировки UTF-8, а другое - использовать альтернативу JSON, которая поддерживает другие кодировки. поэтому я хотел бы попробовать первый. так что если кто-нибудь знает хороший алгоритм для преобразования кодировки текста в UTF-8 с помощью PHP, это поможет. Также приветствуются другие советы или подсказки возможных направлений для поиска решения, пожалуйста, прокомментируйте этот пост, любая идея приветствуется

решаемые Я решил кодировать его в кодировке UTF-8, он изменил мои символы, такие как «ü», на что-то вроде u \ 000f, но редактор java показывает его как iso-8859-1, как Ü, когда он отображается на экране. Отредактированный код PHP имеет следующие строки после запроса:

$q=mysql_query("SELECT * FROM PRODFAR WHERE ARTI LIKE '%$search1%'");
        while($e=mysql_fetch_assoc($q)){
              $e['ARTI'] = utf8_encode ( $e['ARTI'] );
              $e['DESC'] = utf8_encode ( $e['DESC'] );
              $e['PRESENT'] = utf8_encode ( $e['PRESENT'] );   
                $output[]=$e;
        }
        print(json_encode($output)); 

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

JSON поддерживает только UTF8. Поэтому попробуйте использовать utf8_encode () / utf8_decode () для преобразования.

0 голосов
/ 28 февраля 2012

На первый взгляд, я думаю, это проблема кодирования.Убедитесь, что ваши таблицы имеют формат UTF-8, а также что ваши представления совпадают.

Кроме того: Пожалуйста, не помещайте данные $_REQUEST непосредственно в ваш SQL.Это вернется, чтобы преследовать вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...