One part of my app performs a query (via php) on a mysql database. I use in the database UTF-8 because I have letters like é à ê that need to appear. I read through this problem because this seemed almost the same.
Android Java UTF-8 HttpClient Problem
However when I am implementing the code he replaces every return value with an é as null.
This is my code
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
params.setBooleanParameter("http.protocol.expect-continue", false);
HttpClient httpclient = new DefaultHttpClient(params);
HttpPost httppost = new HttpPost("http://www.example.com/example.php");
httppost.setEntity(new UrlEncodedFormEntity(query));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
String jsonText = EntityUtils.toString(entity, HTTP.UTF_8);
Toast.makeText(StoresInfo.this, jsonText, Toast.LENGTH_LONG).show();
is = entity.getContent();
So in the jsonText string he replaces return values with a "è" in it by null.
The last line is = entity.getConent(); I added this because I normally use the input stream to read it but this does not work as well.
Somebody has an idea?
This is my php code
<?php
mysql_select_db("database");
$q=mysql_query($_REQUEST['query']);
while($e=mysql_fetch_assoc($q))
$output[]=$e;
print(json_encode($output));
mysql_close();
?>
-
Are you sure your web interface is in UTF-8?Hrk– Hrk2011年03月15日 21:53:19 +00:00Commented Mar 15, 2011 at 21:53
-
What do you mean? This is my php code...user661434– user6614342011年03月15日 21:57:20 +00:00Commented Mar 15, 2011 at 21:57
-
Are you sur your PHP interface you're asking is providing you UTF-8 content and not another encoding ?Hrk– Hrk2011年03月15日 22:01:08 +00:00Commented Mar 15, 2011 at 22:01
-
In mysql I am using a varchar with utf8_bin.user661434– user6614342011年03月15日 22:01:55 +00:00Commented Mar 15, 2011 at 22:01
-
I tried to output it by echoing it and it showed me the letters yes... If this is an answer to your question :-)user661434– user6614342011年03月15日 22:03:27 +00:00Commented Mar 15, 2011 at 22:03
1 Answer 1
After trying your code on another page, I think your problem come from your server web interface.
You can for example try a GET request on a google page containing "é" characters:
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
params.setBooleanParameter("http.protocol.expect-continue", false);
HttpClient httpclient = new DefaultHttpClient(params);
HttpGet httpget = new HttpGet("http://www.google.ch/search?sourceid=chrome&ie=UTF-8&q=www.google.frb%C3%A9b%C3%A9&qscrl=1#sclient=psy&hl=fr&qscrl=1&source=hp&q=b%C3%A9b%C3%A9&aq=&aqi=&aql=f&oq=&pbx=1&fp=b4d89b2783e136eb&pf=p&pdl=300");
try
{
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
String jsonText = EntityUtils.toString(entity, HTTP.UTF_8);
Log.d("TEST", jsonText);
Toast.makeText(this, jsonText, Toast.LENGTH_LONG).show();
}
catch (Exception e)
{
}