0

postgresデータベースでステートメントphpを実行するスクリプトを作成しました。結果をjson文字列に変換し、 lineを使用して変数selectに渡します。私が解決できない問題は、fromにポーランド語の文字()がエンコードされていることです。この値を取得すると、文字列がエスケープされないため、完全に問題ありません。これが私がこれを行う方法です:jsonの生成:javascript<? echo $a; ?>

jsonphputf-8javascriptUncaught SyntaxError: Unexpected identifier


php

<? $result_json = json_encode($result); ?>

そしてそれをjsに渡す方法:

options_json='<? echo $result_json; ?>';

ブラウザでデバッグすると、次のoptions_jsonようになります。

options_json='[{"code":"za\u0105e ba\u0144stre.".....

やってみescape() utf8_encode()ましaddslashes()た。最初は結果がなく、addslashes()関数はエラーを削除しましたが、構造が破壊されたjsonため、元に戻すことができませんでした。

4

2 に答える 2

0

以下の関数を使用して、アラビア語のテキストを含む配列をエンコードすると便利な場合があります。以下の関数を試してみてください。私はスラッシュを扱っていません。

      public function utf8_encode_all($dat) // -- It returns $dat encoded to UTF8
      {
          if (is_string($dat)) return utf8_encode($dat);
          if (!is_array($dat)) return $dat;
          $ret = array();
          foreach($dat as $i=>$d) $ret[$i] = $this->utf8_encode_all($d);
          return $ret;
       }
于 2013-03-26T07:23:15.953 に答える
0

この例のように、jsonでエンコードされた値を返すようにしてください。

$arr_rslt=array();
$query=" Select col1,col2,col3 from tbl";
$result = mysql_query($query);

while( $row = mysql_fetch_array( $result ) )
{

    $arr_rslt[] = $row;
}

echo json_encode($arr_rslt);

クライアント側で$.ajaxまたは$.postを使用している場合は、コールバックでこれを操作します。$.ajaxでもこれを使用してください。

contentType: "application/json; charset=UTF-8",
于 2013-03-26T07:24:32.747 に答える