0

Android アプリからセルビア語のラテン文字を mysql データベースに挿入する際に問題があります。代わりに がč, ć, š表示されます?, ? , ?

手動でこれらの文字を db に挿入できますが、アプリケーションからはできません。

どんな助けでも大歓迎です!

これが私のPHPです

<?php

$con=mysqli_connect("xx.xx.xx.xx","xxxx","xxxx","xxxx");
mysqli_set_charset($con,"utf8");

// array for JSON response
$response = array();

// check for required fields
if (isset($_POST['NAD']) && isset($_POST['KOM'])&& isset($_POST['VR']) &&     isset($_POST['IDV'])){

$NAD = $_POST['NAD'];
$KOM = $_POST['KOM'];
$IDV = $_POST['IDV'];
$VR = $_POST['VR'];


$result = mysqli_query($con,"INSERT INTO komentari(id, ime, komentar,vrijeme) VALUES('$IDV', '$NAD', '$KOM','$VR')");

// check if row inserted or not
if ($result) {        // successfully inserted into database
    $response["success"] = 1;
    $response["message"] = "";

    // echoing JSON response
    echo json_encode($response);
} else {
    // failed to insert row
    $response["success"] = 0;
    $response["message"] = "Doslo je do greske";

    // echoing JSON response
    echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Nedostaje polje";

// echoing JSON response
echo json_encode($response);
}
?>  
4

1 に答える 1

0

PHP が問題になることはありません。関数を試すことはできますがutf8_encode、通常は不要であり、おそらく機能しません。Web サイトのすべての部分に同じ文字エンコーディングが使用されていること、およびその文字エンコーディングが使用するすべての文字をサポートしていることを確認するだけです。

通常の最も簡単な方法は、BOM なしで UTF-8 (MySQL では utf8_unicode_ci と呼ばれていると思います) を使用することです。これは、時折問題を引き起こす可能性があるためです (一部のソフトウェアでは、この ANSI を UTF-8 と呼んでいます)。そのため、すべての HTML/PHP ページ、さらには JS や CSS も、データベース構造全体と同様に、UTF-8 であることを確認してください。

重すぎてすべてを変換できない構造が既にある場合、唯一の解決策はそれを「昔ながら」にすることです。データベースに何かを保存する前に、たとえばhtmlentities.

そして、&eacute;あなたのページのようなものになってしまいたくない場合は、たとえばhtmlentities_decode(別名html_entity_decode、両方ともうまくいくと思います) を使用して、テキストを以前の形式にデコードする必要があります。

ただし、これは応急処置です。開始する前にすべてが UTF-8 であることを常に確認するとは限らない正当な理由はほとんどありません。今後は必ずそうしてください。

于 2013-08-20T17:38:45.090 に答える