2011-02-17 4 views
2

У меня есть XML-файл с некоторым html в одном из моих узлов. Так в основном делает его, как это в PHPПоявляется перед некоторыми символами в XML-корте

<user_id>'.$review[user_id].'</user_id> 
<content>'.htmlspecialchars(bbcode($review[content])).'</content> 
<content_bbcode>'.htmlspecialchars($review[content]).'</content_bbcode> 
<added_date>'.$review[added_date].'</added_date> 

XML-это ISO-8859-1 кодирования

<?xml version="1.0" encoding="ISO-8859-1"?> 

Там нет никаких больше заголовков.

На другом конце я просто использую simplexml_load_string, чтобы получить файл и разбить его на его составные части (узлы).

Моя проблема заключается в том, что для некоторых персонажей «например», а другие появляются перед персонажем, а в других случаях они вообще не отображаются. Мой сайт также находится в ISO-8859-1. Кто-нибудь знает какие-либо причины для этого или для работы.

Я слышал кое-что о iconv, но это, похоже, не хочет работать. Другие идеи - создать скрипт str_replace, но это звучит немного сложно, и я не могу получить всех персонажей.

Спасибо за любую помощь. Richard

+3

просто угадайте - исходные данные могут быть в UTF-8 – binaryLV

ответ

0

В конце концов, я думаю, что я просто вошел и удалил их. Richard

2

Как вы используете iconv? Попробуйте это до вывода:

$review['content'] = iconv('UTF-8', 'ISO-8859-1', $review['content']); 

P.S. Не связано с проблемой «Â», но вам, вероятно, не хватает котировок вокруг ключей массива - это должно быть $review['content'], а не $review[content]. То же самое для других мест, где используется массив $review.

+0

Я дал ему уйти прямо перед тем, как и нет, - это до того, как я вывешу его, т.е. распечатаю на html? или на xml? Cheers Richard –

0

Вы, кажется, отправляете вывод в UTF-8, но указав кодировку как Latin-1. У вас есть правильная кодировка в вашей базе данных подключение?

Запрос MySQL SET NAMES latin1 преобразует все следующие данные, поступающие из соединения БД, в ISO-8859-1 (Latin1).

+0

Коды для таблиц уже находятся в latin1. Разве этого недостаточно? –

+0

Я только что запустил его через валидатор w3c, и он говорит, что это UTF-8, но я сказал, что ISO-8859-1 в заголовке - я действительно не получаю все эти мелочи. Я - нуб, когда дело доходит до этого! любой свет, который вы можете сиять, будет большим. –

+0

@ Richard Housham: Должно быть - если харшета * connection * не указана (может быть), тогда MySQL преобразует данные в кодировку соединения, прежде чем отправлять их вам. Кроме того, проверьте, какие HTTP-заголовки вы отправляете - вы можете отправлять что-то вроде «Content-Type: text/xml; кодировка = UTF-8'. Валидатор - это IIRC, нюхающий контент - на самом деле выглядит, что данные UTF-8, независимо от того, что говорят метаданные (в заголовке). – Piskvor

Смежные вопросы