UTF 8 - PHP и MySQLi UTF8

мой набор символов таблицы - utf8, и его сопоставление - utf8.now, у меня есть этот код:

<code>   $mysqli = new mysqli("localhost", "root", "", "Amoozeshgah");

            if (mysqli_connect_errno()) {
                  printf("Connect failed: %s\n", mysqli_connect_error());

            }
          if (!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
    printf("Current character set: %s\n", $mysqli->character_set_name());
}
        mysql_set_charset('utf8');
            if ($stmt = $mysqli->prepare("SELECT About_Title FROM Tbl_About WHERE About_Id=?")) {
                $city = 8;

               /* bind parameters for markers */
                $stmt->bind_param("s", $city);

              /* execute query */
                $stmt->execute();

               /* bind result variables */

                  $result = $stmt->get_result();

             /* fetch value */
            while ($myrow = $result->fetch_assoc()) {

        // use your $myrow array as you would with any other fetch
        printf("%s is in district %s\n", $city, $myrow['About_Title']);
        print("shod");

    }
</code>

но на выходе это:

<code>Current character set: utf8 8 is in district نتمنتشس shod
</code>

Что я могу сделать? Редактировать: я заменил:

<code>if (!$mysqli->set_charset("utf8")) {
        printf("Error loading character set utf8: %s\n", $mysqli->error);
    } else {
        printf("Current character set: %s\n", $mysqli->character_set_name());
    }
            mysql_set_charset('utf8');
</code>

с

<code>$mysqli->set_charset("utf8")
</code>

но без разницы

 tonymarschall26 апр. 2012 г., 12:51
Ваша база данных / таблица настроек kollation utf8?
 Mahdi_Nine26 апр. 2012 г., 13:19
@tonymarschall да, это так.

Ответы на вопрос(5)

Решение Вопроса

mysql_set_charset('utf8'); в$mysqli->set_charset("utf8") :-)

 26 апр. 2012 г., 13:29
Рад помочь вам. :-)
 Mahdi_Nine26 апр. 2012 г., 13:27
спасибо, это сработало!
 Mahdi_Nine26 апр. 2012 г., 13:18
я изменил это, но без разницы
 26 апр. 2012 г., 13:22
Использовали ли вы кодировку utf 8 в заголовке своей страницы, куда поступает этот вывод?

анные, но и должны правильно отображать их на страницах, поэтому попробуйте использовать кодировку UTF-8 в заголовке вашей страницы:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta charset="utf-8">

Это моя проблема и решение, благодаря Rohit Kumar Choudhary.

который может помочь кому-то еще. Никаких технических подробностей / объяснений, а просто подсказка в правильном направлении.

Сценарий: удаленное автоматическое создание учетной записи пользователя на основе успешной / ПРОВЕРЕННОЙ транзакции IPN PayPal. Mysqli Query создает данные пользователя и usermeta, но значение этих данных содержит скрытые символы форматирования и делает недействительным использование этих данных, вызываемых при обработке формы. Очень простое решение без изменения / изменения любых существующих таблиц БД. По сути, это гарантирует, что ваши данные представляют собой только печатаемые символы ASCII и даже используют $ mysqli-> gt; set_charset (& quot; utf8 & quot;); на самом деле это не так важно, поскольку вы готовите свои данные для обработки и ввода «ASCII clean».

    $create_ipn = $mysqli->prepare("INSERT INTO xxx_somewhere (some_ipn_parameter , email, domain, item) VALUES (?, ?, ?, ?)");
    $create_ipn->bind_param("ssss", $some_ipn_parameter, $email, $domain, $item);

    $some_ipn_parameter = preg_replace( '/[^\x01-\x7F]/', "", 'the_actual_ipn_data' );
    $email = '[email protected]';
    $domain = '';
    $item = 'Test';
    $create_ipn->execute();         
or mysqli_set_charset($this->mysqli,"utf8");
mysqli_set_charset($conn,"utf8");

header('Content-Type: text/plain; charset=utf-8');

Ваш ответ на вопрос