0

ポーランド語の文字に問題があります。"Łukasz" の代わりに "?ukasz" や "null" のように、"Kraków" であるはずなのに、正しく書かれた単語を取得できません。mysql_connect または iconv(on json_encode($output)) の後に "mysql_set_charset('utf-8'/'iso-8859-1')" を試しましたが、それでも同じです (ただし、"ヌル")。どんな助けにも感謝します。

これは、私の Android アプリの php ファイルです。

$id_client = $_REQUEST['id_klienta'];
$con=mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('courier_helper') or die(mysql_error());

$sql=mysql_query("SELECT * FROM `clients` WHERE id_klienta='$id_client'");
while($r=mysql_fetch_assoc($sql))
    $output[]=$r;

print(json_encode($output));

mysql_close($con);

?>
4

2 に答える 2

2

どこでも UTF-8 を使用していることを確認する必要があります。

  • スクリプト ファイルのエンコーディング (ANSI ではなく UTF-8) - Notepad++ でエンコーディングを設定できます
  • html コード (メタ文字セット)
  • データベース テーブル文字セット (テーブルまたはデータベースを作成する場合)
  • データベースmysql_set_charset('utf8', $connection_obj);
  • データベースSET NAMES utf8- 接続後にその SQL コマンドを実行します

そしてもう 1 つ - PDO に慣れてください。これは、私が使用する PDO 接続関数です。

function DbConnect()
{
    $db_host = "localhost";
    $db_name = "database_name";
    $db_user = "your_username";
    $db_pass = "your_passwd";

    $link = new PDO("mysql:host=$db_host;dbname=$db_name; charset=UTF-8", $db_user, $db_pass);
    $link->exec("set names utf8;");
    return $link;       
}

この関数を次のように使用できます (これは PDO の例です)。

    $link = DbConnect();

    $query = $link->prepare("SELECT id FROM wp_users");

    $query->execute();

    $result = $query->fetchAll(PDO::FETCH_ASSOC);
于 2013-03-09T21:04:33.953 に答える
1

データベースにデータを UTF8 として格納する必要があります。これは、既存のテーブルを変換することを意味します。

ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

また、データベースへの接続が UTF8 であることを確認する必要があります。接続直後に SET NAMES クエリを実行することで、それを確認できます。

SET NAMES UTF8

他の人が述べたように、PDO の使用を開始する必要があります。

于 2013-03-09T21:06:50.460 に答える