Я нашел проблему с некоторыми результатами поиска по БД. Когда в некоторых полях есть дополнительные символы, такие как «ü», поле возвращается как нулевое, поэтому оно отображается как нулевое в поиске. Мой код такой:
Скрипт 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));