у меня есть следующий код javascript:
http://www.nomorepasting.com/getpaste.php?pasteid=22561
Что отлично работает (функция makewindows была изменена, чтобы показать, что это переменная php), однако html содержит символы юникода, и ему будут назначены только символы, ведущие к первому символу юникода. Если я создам небольшой тестовый файл и напрямую выведу article_desc, будет выведен весь html, хотя вместо правильных символов отображаются метки запросов. Однако json_encode, похоже, сокращает html, что приводит к ошибкам.
edit: вот дамп прямо из базы данных mysql html, который я пытаюсь отобразить:
http://www.yousendit.com/download/TTZueEVYQzMrV3hMWEE9PQ
в источнике написано utf-8. Фактический код страницы, сгенерированный при отображении article_desc, находится здесь:
http://www.nomorepasting.com/getpaste.php?pasteid=22566
это определенно одна и та же запись, поэтому я не уверен, почему она сильно отличается.
изменить: это было исправлено путем вызова: mysql_query ('SET NAMES utf8');
Насколько я могу судить, в базе данных нет вопросительных знаков, но, возможно, и не правильный Unicode.






Я не думаю, что вам нужен json_encode. json_encode кодирует массивы и объекты PHP в читаемый формат JavaScript. Если вы отправляете простой текст или html в ajax, вам не нужен json_encode
json_encode также будет обрабатывать такие вещи, как экранирование кавычек для вас
json_encode ожидает, что строки будут потоками байтов в кодировке UTF-8. Вам придется либо использовать строки в кодировке utf-8 внутри (что в любом случае является единственным текущим способом работы с символами Unicode в PHP), либо использовать другая библиотека для генерации json.
Есть ли способ преобразовать данные или вставить их в базу данных mysql как unicode?
Вы можете преобразовать строки latin1 (что по умолчанию для php5), используя utf8_encode (). Почему вы не можете использовать компоненты Zend Framework?
json_encode( utf8_encode( $Content ) );
Это решит вашу проблему.
Я была такая же проблема. Я использую Zend_Db / mysqli, и содержимое моей базы данных на самом деле UTF8.
Я решил проблему, попросив свой адаптер базы данных использовать UTF8:
$conf->db->params['charset'] = 'UTF8';
Если вы используете PDO вместо mysqli, вы можете сделать это следующим образом:
$pdoParams = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;');
$conf->db->params['driver_options'] = $pdoParams;
Если вы не используете Zend_Db, но используете mysqli, вы можете посмотреть http://php.net/manual/en/mysqli.set-charset.php.
вы можете увидеть, правильный ли юникод в базе данных? т.е. есть вопросительные знаки или нет?