текст unicode не отображается должным образом при получении с помощью ajax - PullRequest
2 голосов
/ 25 мая 2011

У меня есть модуль администратора и интерфейсный модуль.

У меня есть раздел категории.

Я создаю категории, публикуя значение из текстового поля в php через ajax. И кодировка администратора, и интерфейсная часть - это utf-8.

Я прочитал, что по умолчанию ajax использует кодировку utf-8.

пока я размещаю данные, они отлично сохраняются в базе данных.

Я вижу этот текст Unicode в базе данных.

а также я могу видеть это при перечислении в админке и во внешнем интерфейсе.

НО

когда я нажимаю "изменить", я получаю данные с сервера, используя ajax / json

что я получаю это просто ????? вместо текста в Unicode.

Где, как при обычной загрузке, отображается хорошо.

В чем может быть проблема ... чего мне не хватает?


Редактировать

var jax = createAjax();
jax.open("POST",path,true)  
jax.setRequestHeader('Content-type','application/x-www-form-urlencoded; charset=utf-8');
jax.onreadystatechange = afunction;

вот код php

$query = "select * from $box where id=$id";
if(! ($res = mysql_query($query)))die(mysql_error());
$rs = mysql_fetch_array($res,1);
$rs['status'] = 1;
header("Content-Type: text/html; charset=utf-8");
die(json_encode($rs));

Я использовал вышеприведенное как для запроса, так и для ответа ... даже я изменил utf-8 на iso-85 ** - 1 что-то, что по умолчанию, но безрезультатно.

я прикрепил скриншоты ниже Откройте изображения в новом окне или вкладке, чтобы увеличить их enter image description here

на изображении выше вы можете видеть, что в листинге хорошо отображается символ utf, но при редактировании с использованием ajax и json он отображается как ???? в текстовом поле.

enter image description here

и вот как текст появляется в БД ... enter image description here

Ответы [ 2 ]

1 голос
/ 26 мая 2011
SET NAMES 'utf8' COLLATE 'utf8_general_ci'

это помогло мне решить эту проблему.

выполнить этот запрос после того, как вы установили соединение.

я получил эту структуру воспламенителя кода формы информации, потому что этот код работаетхорошо, но когда я использовал mysql_query напрямую, я не смог получить ожидаемый результат.

если вы используете воспламенитель кода, то это делается по умолчанию, иначе вы должны включить эту строку.

Я не принимаюЭто мой собственный ответ, потому что пользователи могут публиковать еще несколько причин, поэтому я жду новых комментариев и ответов на этот вопрос.

В любом случае, он работает сейчас.

Кроме того, убедитесь, что в таблице сопоставление utf8, и поле также это.

0 голосов
/ 25 мая 2011

Попробуйте либо / оба:

  1. Откройте ваши файлы в блокноте, нажмите «Сохранить», обязательно сохраните в utf-8 вместо Ansi ,(Особенно тот, который обеспечивает JSON)
  2. Принудительный ответ: utf-8 (для php: <?php header('Content-type: text/html; charset=utf-8'); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...