Json_encode и проблема юникода mysql

у меня есть следующий код 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');

вы можете увидеть, правильный ли юникод в базе данных? т.е. есть вопросительные знаки или нет?

Tom Haigh 08.12.2008 17:16

Насколько я могу судить, в базе данных нет вопросительных знаков, но, возможно, и не правильный Unicode.

user1253538 09.12.2008 15:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
6 448
4

Ответы 4

Я не думаю, что вам нужен json_encode. json_encode кодирует массивы и объекты PHP в читаемый формат JavaScript. Если вы отправляете простой текст или html в ajax, вам не нужен json_encode

json_encode также будет обрабатывать такие вещи, как экранирование кавычек для вас

Tom Haigh 08.12.2008 17:04

json_encode ожидает, что строки будут потоками байтов в кодировке UTF-8. Вам придется либо использовать строки в кодировке utf-8 внутри (что в любом случае является единственным текущим способом работы с символами Unicode в PHP), либо использовать другая библиотека для генерации json.

Есть ли способ преобразовать данные или вставить их в базу данных mysql как unicode?

user1253538 09.12.2008 14:34

Вы можете преобразовать строки latin1 (что по умолчанию для php5), используя utf8_encode (). Почему вы не можете использовать компоненты Zend Framework?

troelskn 10.12.2008 00:01
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.

Источник: http://www.zfsnippets.com/snippets/view/id/13

Другие вопросы по теме