PHP / JSON字符集解码

时间:2012-02-11 01:17:04

标签: php

我正在使用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>
 }

1 个答案:

答案 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时,编码让我的生活不止一次悲惨。

希望我能帮忙!