2016-05-12 2 views
0

У меня есть база данных joomla, где сопоставление соединений mySQL - utf8_general_ci. У меня есть некоторые дополнительные данные в базе данных (не связанные с установкой joomla), которые я хочу заполнить данными из PHP-скрипта.Вставить специальные символы в базу данных из php

СПУСТЯ EDIT: проверьте ниже

При попытке вставки специальных символов (язык и область специальных символов) я получаю jibberish в базе данных, как Ã®ÄƒÃ®È ™ Э> вместо îăîşţ.

Сопоставление для всех столбцов в базе данных Joomla является: utf8mb4_unicode_ci (если это делает никакой разницы)

Странная вещь, что если я показать содержимое базы данных в электронной почте/мобильное приложение (на основе браузера) он корректно отображает данные. Но я вижу, что что-то не так с вставкой valus из PHP, поскольку, если я вставляю его вручную с панели phpmyadmin, значение будет правильно отображаться в таблице.

<?php header('Content-type: text/html; charset=UTF-8'); //header is specified here 

$value_to_insert = addslashes($_REQUEST['value']); //get the value from the parameter 

inserttask($value_to_insert); //insert the value into the datatable 

function inserttask($value_to_insert) 
{ 
    $con = mysqli_connect("host",username,password,database); //set up my mysqli connection 
    //mysql_set_charset('utf8'); //this didn't help 

    if (!$con) 
    { 
     die(); 
    } 

    $sql = "INSERT INTO `table` (`value`) VALUES ('".mysqli_real_escape_string($con, $value_to_insert)."')"; 

    if($result=mysqli_query($con,$sql)) 
    { 
     print "OK"; 
    } 
    else 
    { 
     print "ERROR"; 
    } 
} 

?> 

Любые идеи о том, как должна быть сделана эта вставка, чтобы сделать ее совместимой с любым зависимым от региона символом?

Позже изменения: я побежал "показать переменные, такие как '%' % сортировки" collation_connection - utf8_general_ci collation_database - latin1_swedish_ci collation_server - latin1_swedish_ci

Может ли это быть проблема?

+0

Вы пробовали mysql_set_charset ('utf8mb4'); '? – GertG

+0

Да. И если я делаю следующее: mysqli_set_charset ('utf8'); print $ conf> character_set_name(); он будет распечатывать «Latin1» вместо utf8 – Laureant

ответ

0

После настройки соединения, поскольку мне приходилось менять кодировку соединений определенным образом.

$con = mysqli_connect("mydb12.surf-town.net","bosteen_licadm","Ugymate92","bosteen_p2p"); 

$con->set_charset("utf8"); 

После этого вставка работает!

Смежные вопросы