Специальные символы для MySQL из PHP - PullRequest
1 голос
/ 18 ноября 2011

Я знаю, что было много почти одинаковых вопросов, но я все еще не нашел ответа на свою проблему. Я хочу поместить "Les Ales Açores" в БД. Но я получаю:

les Îles Açores

Я попробовал usin:

  • SET Names 'ut8)
  • $mysqli->set_charset("utf8");
  • mysql_real_escape_string()
  • htmlentities (Здесь я got htmlentities, но я хочу знать, есть ли другой способ)

Код:

$name_fr = $_POST["name_fr"]; $name_nl = $_POST["name_nl"];
$arr_kollommen = array("NAME_FR","NAME_NL");
        $arr_waardes = array($naam_nl,$naam_fr);
        $obj_db->insert("landen",$arr_kollommen,$arr_waardes);

У кого-нибудь есть идеи, как решить мою маленькую проблему? Большое спасибо!

Ответы [ 5 ]

1 голос
/ 18 ноября 2011

Убедитесь, что в таблице указаны правильные значения CHARSET, например:

CREATE TABLE myTable (
    one VARCHAR(255),
    two VARCHAR(255)
) DEFAULT CHARSET=utf8;
1 голос
/ 18 ноября 2011
  1. Убедитесь, что вы действительно пишете в UTF8 (то есть ваша IDE / редактор, в котором вы пишете свой код, должен иметь кодировку UTF8).
  2. Повреждена ли запись как в БД, так и на вашей странице послевы его или только в БД извлекаете?
0 голосов
/ 21 ноября 2011

Передаете ли вы параметр "UTF-8" в свои htmlentities и html_entity_decode таким образом?

html_entity_decode ($ text, ENT_QUOTES, "UTF-8");

0 голосов
/ 21 ноября 2011
$name_fr = $_POST["name_fr"]; 
$name_nl = $_POST["name_nl"];
$arr_kollommen = array("NAME_FR","NAME_NL");
$arr_waardes = array($naam_nl,$naam_fr);
$obj_db->insert("landen",$arr_kollommen,$arr_waardes);

Попробуйте использовать вместо кодирования для декодирования utf_8. как это:

$name_fr = $_POST["name_fr"]; 
$name_nl = $_POST["name_nl"];
$naam_fr = utf8_decode($naam_fr);
$naam_nl = utf8_decode($naam_nl);
$arr_kollommen = array("NAME_FR","NAME_NL");
$arr_waardes = array($naam_nl,$naam_fr);
$obj_db->insert("landen",$arr_kollommen,$arr_waardes);
0 голосов
/ 18 ноября 2011

2 возможных причины, которые я вижу:

1) В вашей базе данных нет полей UTF-8

2) Когда вы читаете свои данные с сервера, вы не устанавливаете соединение как utf-8. Если вам нужно установить utf-8 при записи, вы также должны установить utf-8 при чтении.

Проверьте с помощью PHPMyAdmin, не повреждены ли данные ... Если это так, то это означает, что ваш SET names'utf-8 'не работает ...

...