我正在使用Android手机发送的数据在PHP中读取JSON数据。用户提交一个名称,JSON / PHP将其填充到MySql数据库中。我的一些用户是韩语。 Android处理韩文字符就好了,但是当数据通过JSON传来然后在PHP中读取时就像这样:
$json = $_SERVER['HTTP_JSON'];
$data = json_decode($json);
$username = $data->username;
一个完美的韩语音节,如“김”,将变成$ username作为“9C9G”。在我的Eclipse调试器中,我可以看到在Android端仍然正确格式化了名称,但PHP方面却没有。我还没有进入MySQL阶段,而且它已经被抢断了。
在PHP端应该做什么来接受其他字符?我只想将名称填入表中,稍后在字符串中引用它。另外,当使用这些字符填充MySQL数据库时,我需要做些什么呢?
它是从Android应用程序发送的,如下所示:
public void postData() throws JSONException{
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://martypants.us/triominoes/register.php");
JSONObject json = new JSONObject();
try {
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);
<snip>
}
答案 0 :(得分:0)
从你所说的“Android处理韩文字符就好了”我只能推断Android将数据作为UTF8传递到你的PHP应用程序而你没有正确解码它。我的猜测是你尝试这样的事情:
//this is reaaaaally not safe, but... missing the point
$json = $_SERVER['HTTP_JSON'];
//check if it's utf8
if ( is_string($value) ){
$json = mb_check_encoding($json, 'UTF-8') ? utf8_encode( $json ) : $json;
}
$jsonData = json_decode($json);
这只是一个想法,但在使用PHP时,编码让我的生活不止一次悲惨。
希望我能帮忙!