Русский язык в PHP HTML

Я сохранил русский язык в PHP и MySql. Вот примеры символов тыуиппюлкйчг

Я использовал эти строки в PHP при сохранении

mysql_query("set character_set_server='utf8'");
mysql_query("set names 'utf8'");

Я проверил базу данных, она успешно сохранена. Теперь я хочу отобразить ее пользователю в РЕДАКТОРЕ, она возвращает мне ????????????

Вот мой код, как я получаю из таблицы и отображаю его

$.getJSON("getSingleRow.php?id="+id+"&type="+type, function(json){ 
 $("#"+key).val(val);
});

И на getSingleRow.php у меня есть этот код

echo json_encode($russian);

Примечание: когда я запускаю getSingleRow.php напрямую, он также печатает ????????????

ОБНОВЛЕНО: Прежде всего, он успешно сохранен в базе данных, я вижу, что он на русском языке.

У меня есть две страницы, чтобы получить это. Одна страница с редактором, у меня есть эта строка сверху

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Также сверху в php у меня есть эта строка

header('Content-Type: text/html;charset=utf-8');

Другой файл находится на стороне сервера, откуда я его получил... getSingleRow.php В верхней части этой страницы у меня есть

header('Content-Type: text/html;charset=utf-8'); 

и в конце у меня есть этот код

echo json_encode($russian);

Все ответы на этот вопрос уже были применены, но не повезло

ДАЖЕ простой этот код не работает

<?php
header('Content-Type: text/html;charset=utf-8');
echo "тыуиппюлкйчг ";
?>

person user3244721    schedule 06.05.2014    source источник
comment
Если вы распечатаете свою базу данных, получите вывод... она работает правильно? У меня были некоторые проблемы с получением из базы данных.   -  person eL-Prova    schedule 06.05.2014
comment
Смотрите мой обновленный ответ. mysql_query (УСТАНОВИТЬ ИМЕНА UTF8); это неправильно для вас, я думаю :-)   -  person eL-Prova    schedule 06.05.2014
comment
Я успешно сохранил в базе данных... проблема только в просмотре... и да, я применил все ваши предложения, но не работает   -  person user3244721    schedule 06.05.2014
comment
Когда вы делаете выбор в своем запросе через phpmyadmin или что-то еще, правильный вывод? Вы проверили, установив файл php на UTf-8, может ли он работать?   -  person eL-Prova    schedule 06.05.2014
comment
Нет, в то время он также показывает ?????????   -  person user3244721    schedule 06.05.2014


Ответы (6)


Поместите заголовок charset=utf-8 на страницу, где вы хотите его отобразить.

<?
header('Content-Type: text/html;charset=utf-8');
?>
person Community    schedule 06.05.2014
comment
см. обновленный вопрос... У меня уже есть эта строка... но она не работает - person user3244721; 06.05.2014

  1. Убедитесь, что кодировка/сопоставление базы данных UTF-8.

  2. На странице вы вставляете эти русские символы (форма, текстовое поле), убедитесь, что кодировка UTF-8, установив Content-Type в text/html; кодировка=utf-8. Введите русский текст прямо в форму ввода.

  3. На странице обработки, которая обрабатывает эту форму, которая вставляет ее в базу данных, обязательно сделайте SET NAMES utf8, чтобы она сохранялась как UTF-8, прежде чем вставлять данные в отдельный запрос заранее.

  4. Когда вы визуализируете контент из базы данных в представлении, убедитесь, что Content-Type имеет значение text/html; кодировка=utf-8.

Убедитесь, что тип содержимого отличается от windows-1251 или iso-8859-1/latin1. Убедитесь, что кодировка/сопоставление базы данных НЕ ISO-8859-1/Latin1.

From: MySQL - русские символы отображаются неправильно

person eL-Prova    schedule 06.05.2014
comment
Для русского или русско-английского сайта обычно используется сортировка utf8_general_ci. Если должны использоваться языки со специальными латинскими символами (например, немецкий), требуется utf8_unicode_ci. - person Mikhail Batcer; 06.05.2014
comment
Я успешно сохранил в базе данных ... я вижу там ... Но когда я хочу вернуть его, он дает мне ????? пожалуйста, смотрите мой обновленный вопрос - person user3244721; 06.05.2014

Сопоставление в базе данных должно быть установлено на кириллицу, чтобы принимать русские символы. В итоге я использовал набор сопоставлений CYRILLIC_GENERAL_CI_AS.

Проверьте эту ссылку: http://www.davecheung.com/blogpost/converting-a-sql-server-2005-database-to-accept-russian-charactersmultilingual-characters/

person Clément Andraud    schedule 06.05.2014

Вы пробовали параметр JSON_UNESCAPED_UNICODE внутри json_encode()?

json_encode($russian, JSON_UNESCAPED_UNICODE)

Просто работает в PHP 5.4.0

Если ваша версия предыдущая, попробуйте это:

<?php
$str = 'russian - русский';
$str = json_encode($str);
$str = preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
function ($matches) {
    $sym = mb_convert_encoding(
            pack('H*', $matches[1]), 
            'UTF-8', 
            'UTF-16'
            );
    return $sym;
},
$str
);
echo $str . PHP_EOL;
person Kakitori    schedule 06.05.2014
comment
Предупреждение: json_encode() ожидает ровно 1 параметр, 2 задано в - person user3244721; 06.05.2014

Пожалуйста, установите mysql_set_charset('utf8'); выше, где вы отображаете данные.

person Stephen    schedule 26.10.2018

После использования этого кода

$conn = mysqli_connect($dbhost, $dbuser, $dbpass);

вы должны добавить этот код для русского языка в MySQL.

mysqli_query($conn, "set names utf8");
person Clarenceli    schedule 05.01.2019