× ¢ × × ©« Параметры сортировки таблицы по умолчанию - latin1_swedish_ci, я также попытался изменить на utf-8_general_ci, he" />

Как вставить значение на иврите в MySQL базы данных в php

php mysql collation

10887 просмотра

8 ответа

Я пытаюсь вставить значение иврита в мою базу данных mysql, а не иврит значения выглядит так.

× © × «×" × × © «×> × ¢ × × ©«

Параметры сортировки таблицы по умолчанию - latin1_swedish_ci, я также попытался изменить на utf-8_general_ci, hebrew_bin, hebrew_general_ci, но результат все тот же.

В моем коде я использую, конечно, метатег для настройки кодировки:

<meta charset="UTF-8">

И перед моим php-запросом я добавил эту строку:

mysql_query("SET NAMES utf8");

Я просматриваю результат в phpmyadmin.

Автор: Imri Persiado Источник Размещён: 12.11.2019 09:13

Ответы (8)


2 плюса

Решение

Проверьте collation_connection:

show variables like '%collation%'
Автор: dwjv Размещён: 30.05.2013 12:53

16 плюса

Я решил свою проблему иврита. Это была проблема кодирования строки / поля базы данных и таблицы. Вот решение, которое я использовал. Я получил помощь от другого ответа, и ссылка приведена ниже, на случай, если кому-то понадобится.

  1. Сортировка базы данных должна быть utf8_general_ci.
  2. Сравнение таблицы с ивритом должно быть utf8_general_ci.
  3. В скрипт подключения PHP поставь

    header('Content-Type: text/html; charset=utf-8');
    
  4. В заголовок xhtml положить

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
  5. Если вы используете MySQLi, поместите этот код в скрипт подключения после выбора базы данных:

    mysql_query("SET NAMES 'utf8'");
    

    Если вы используете PDO, поставьте

    $conn->query("SET NAMES 'utf8'");
    

Первый ответ помог мне, и я взял его оттуда

Автор: Sarkar Raj Размещён: 21.09.2013 04:14

6 плюса

Установите кодировку для достижения решения

При создании базы данных

CREATE DATABASE db_name
 CHARACTER SET utf8
 DEFAULT CHARACTER SET utf8
 COLLATE utf8_general_ci
 DEFAULT COLLATE utf8_general_ci
 ;

Или, если база данных уже создана

CREATE TABLE table_name(
 ...
 )
 DEFAULT CHARACTER SET utf8   
 COLLATE utf8_general_ci;

ИЛИ при написании запроса

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);


$re = mysql_query('SHOW VARIABLES LIKE "%character_set%";')or die(mysql_error());
while ($r = mysql_fetch_assoc($re)) {var_dump ($r); echo "<br />";} 
Автор: Praveen D Размещён: 26.09.2013 05:34

1 плюс

Вы должны убедиться, что:

  1. Вы устанавливаете UTF-8 в PHP
  2. вы используете UTF-8 в соединении
  3. ваша таблица определена как utf-8_general_ci
  4. конкретное поле определяется как utf-8_general_ci

Тогда вы сможете правильно просматривать иврит или любой другой язык в phpadmin.

Автор: Aris Размещён: 30.05.2013 02:39

0 плюса

Я бы сказал, чтобы убедиться, что значения хорошо передаются в базу данных, я бы добавил штамп формы перед вставкой в ​​базу данных и напечатал значение, например:

die($_POST['thevalue']);
//insert to database.
//...

Если все идет хорошо, то проблема на стороне базы данных, на базе данных я бы попробовал с этим сопоставлением

| иврит | ISO 8859-8 Иврит | hebrew_general_ci | 1 |

согласно http://dev.mysql.com/doc/refman/5.0/en/charset-mysql.html предложить.

Но если произойдет сбой на стороне php, причина может быть в том, что сервер не поддерживает иврит, убедитесь, что в выходном документе html вы используете правильный метатег с

...
<meta charset="ISO 8859-8">
...

Дайте нам знать, как это будет продолжаться, удачи :)

Автор: peterpeterson Размещён: 26.09.2013 01:22

0 плюса

Я согласен с тем, чтобы установить его в качестве опции utf-8, однако, если по какой-то причине вы не можете, вы всегда можете конвертировать в base64. Не самый лучший (на долгий путь), но может помочь кому-то из дыры.

Автор: Heather Herbert Размещён: 26.09.2013 01:46

0 плюса

Для будущего использования, если у вас есть эта проблема, и вы используете PDO, а не mysqli, вам нужно будет сделать это так:

  1. Сравнение базы данных ( все это ) должно быть utf8_general_ci .
  2. Установите сопоставление таблицы с ивритом также в utf8_general_ci .
  3. В HTML-тег «head» добавьте следующее:
  4. В вашем файле подключения PHP добавьте после запроса соединения следующую строку: conn-> exec ("set names utf8");
  5. если вы используете классы, то, вероятно, у вас будет переменная "conn". в этом случае вам придется использовать его следующим образом: $ this-> conn-> exec ("set names utf8");

Надеюсь, что это поможет будущим людям, которые имеют эту проблему и используют PDO. Удачи.

Автор: GabMic Размещён: 18.09.2016 03:09

0 плюса

что наконец помогло мне добавить кодировку к соединению:

{"mysql:host=$host;dbname=$db;charset=utf8"}
Автор: Holy Moses Размещён: 29.12.2016 10:05
Вопросы из категории :
32x32