У меня есть следующий код:
$rows=array();
while($row=mysql_fetch_assoc($result))
{
echo $row["titel"];
$rows[] = array_map('utf8_encode', $row);
}
echo json_encode($rows);
Каким-то образом вывод пуст, хотя я использую функцию «json_encode». Сортировка моих столбцов различает utf8_bin и utf8_general_ci.
«echo $ row [» titel «]» выводит заголовок каждой записи, содержащейся в моей таблице, поэтому я предполагаю, что ошибка должна возникать при кодировании.
Буду признателен за каждый ответ 🙂
Вы можете использовать эту идею:
$rowUtf8encode[]=array_map('utf8_encode',$row);
$rows[]=array_map('json_encode',$rowUtf8encode);
echo($rows);
это работает смешно
Кажется, вам не хватает пакета php: «php-xml».
Убедитесь, что на вашем сервере есть пакет «php-xml» (или «php5-xml»).
Вы можете проверить, запустив на своем сервере следующую команду:
rpm -qa | grep 'php-xml'
или же
rpm -qa | grep 'php5-xml'
Пусть база данных делает кодировку!
Сначала вы должны знать несколько вещей:
utf8_encode
кодирует только от ISO 8859-1 до UTF-8mysql_
функции устарели! использование PDO или же MySQLi вместо! (ищите готовые заявления)json_encode
генерирует сообщения об ошибках, которые вы можете получить, позвонив json_last_error_msgДопустим, ваше приложение работает с latin1
закодированные строки. Затем вы должны просто изменить набор символов для подключения MySQL, когда это необходимо:
//Change to utf8
mysql_query("SET NAMES 'utf8'");
$result = mysql_query($sqlQuery);
$rows = array();
while($row = mysql_fetch_assoc($result)) {
$rows[] = $row;
}
echo json_encode($rows);
//Back to latin1 (if needed)
mysql_query("SET NAMES 'latin1'");
Как только вы установили соединение, измените кодировку.
Это связано с вашей конфигурацией базы данных Charset.
$ mysqli = new mysqli («localhost», «UsrChingon», «PwdChingon», «DbChingona»);
$ Mysqli-> set_charset ( «utf8»);