mysql — PHP: utf8_encode не работает, пустой json_encode?

У меня есть следующий код:

$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 «]» выводит заголовок каждой записи, содержащейся в моей таблице, поэтому я предполагаю, что ошибка должна возникать при кодировании.

Буду признателен за каждый ответ 🙂

0

Решение

Вы можете использовать эту идею:

$rowUtf8encode[]=array_map('utf8_encode',$row);
$rows[]=array_map('json_encode',$rowUtf8encode);
echo($rows);

это работает смешно

4

Другие решения

Кажется, вам не хватает пакета php: «php-xml».
Убедитесь, что на вашем сервере есть пакет «php-xml» (или «php5-xml»).

Вы можете проверить, запустив на своем сервере следующую команду:

rpm -qa | grep 'php-xml'

или же

rpm -qa | grep 'php5-xml'
0

Пусть база данных делает кодировку!

Сначала вы должны знать несколько вещей:

  • Латинская1 MySQL является не ISO 8859-1, но CP1252! Увидеть разницу Вот.
  • utf8_encode кодирует только от ISO 8859-1 до UTF-8
  • Для преобразования кодировок лучше использовать mb_convert_encoding (или же Iconv)
  • mysql_ функции устарели! использование 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'");
0

Как только вы установили соединение, измените кодировку.
Это связано с вашей конфигурацией базы данных Charset.

$ mysqli = new mysqli («localhost», «UsrChingon», «PwdChingon», «DbChingona»);
$ Mysqli-> set_charset ( «utf8»);

0