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


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

ש×"גש×"כעש×"

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

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

<meta charset="UTF-8">

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

mysql_query("SET NAMES utf8");

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

Author: Imri Persiado, 2013-05-30

8 answers

Проверьте сопоставление_соединения:

show variables like '%collation%'
 2
Author: dwjv, 2013-05-30 12:53:03

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

  1. параметры сортировки бд должны быть utf8_general_ci.
  2. сопоставление таблицы с ивритом должно быть utf8_general_ci
  3. в моем скрипте подключения php я поставил header('Content-Type: text/html; charset=utf-8');
  4. в моем теге xhtml head я поставил <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. после выбора базы данных в сценарии подключения я положить mysql_query("SET NAMES 'utf8'");

И тогда проблема была решена.

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

 17
Author: Sarkar Raj, 2017-05-23 11:52:56

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

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

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 />";} 
 6
Author: Praveen D, 2013-09-26 06:25:55

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

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

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

 1
Author: Aris, 2013-05-30 14:39:01

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

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

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

|иврит | ISO 8859-8 Иврит | еврейский_генерал_ци| 1|

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

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

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

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

 0
Author: peterpeterson, 2013-09-26 13:22:24

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

 0
Author: Heather Herbert, 2013-09-26 13:46:03

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

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

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

 0
Author: GabMic, 2016-09-18 15:09:51

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

{"mysql:host=$host;dbname=$db;charset=utf8"}
 0
Author: Holy Moses, 2016-12-29 22:11:06