웹 사이트 용 RSS 피드를 만들었지 만 그리스어와 영어의 2 개 언어가 있습니다. 항목에 그리스어로 된 제목이있는 경우 rss 피드를 제외한 모든 항목이 올바르게 작동합니다.PHP rss 피드 문자 인코딩 다국어 피드 항목
그래도 문자열을 구문 분석하기 전에 인코딩을 변경해야합니다. 나는 100 % 실패했다.
php가 제공하는 모든 인코딩 기능을 시도했습니다. iconv, ut8_encode, mb_convert_encoding 또한 mb_detect_encoding strict입니다. 또한 HTML 엔티티를 사용하지만, 아무것도 RSS를 생성하는 소스 코드는 이것이다
을 작동하는 것 같다 없습니다 :
function construct_rss($results, $cat = null)
{
if($results == false)
{
exit;
}
header('Content-Type: application/rss+xml charset=UTF-8');
$rssfeed = '<?xml version="1.0" encoding="utf-8" ?>';
$rssfeed .= '<rss version="2.0">';
$rssfeed .= '<channel>';
$rssfeed .= '<title>domain.com RSS feed</title>';
$rssfeed .= '<link>http://www.domain.com</link>';
if($cat == null)
{
$rssfeed .= '<description>Upcoming events</description>';
}
else
{
$rssfeed .= '<description>Upcoming events - ' . $cat . '</description>';
}
$rssfeed .= '<language>en-us</language>';
$rssfeed .= '<copyright>Copyright (C) 2012 domain.com</copyright>';
foreach ($results as $key => $event)
{
$exp = explode(',',$event['vName']);
$vName = $exp[0];
$rssfeed .= '<item>';
$rssfeed .= '<title>' . $event['eTitle'] . ' @ ' . $vName . '</title>';
$rssfeed .= '<description>' . htmlentities('<a href="http://www.domain.com/event.php?eid=' . $event['id'] .'"><img WIDTH="150" HEIGHT="220" style="width:150px;height:220px;padding-bottom:10px;padding-right:10px;" src="http://'.$_SERVER['SERVER_NAME'].'/image.php?source='.urlencode('events/'.$event['folder'].'/images/default/' . $event['file_1']).'&w=150&h=220&out=raw"></a>' . '<p>' . $event['eDescr'] . '</div>') . '</description>';
$rssfeed .= '<link>http://www.'.$_SERVER['SERVER_NAME'].'/events/' . urlencode($event['eCategory']) . '/' .urlencode($event['url']). '</link>';
$rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($event['dStart'] . ' ' . $event['tStart'])) . '</pubDate>';
$rssfeed .= '</item>';
}
$rssfeed .= '</channel>';
$rssfeed .= '</rss>';
echo $rssfeed;
}
을 그리고 여기에 원시 출력 :
<?xml version="1.0" encoding="utf-8" ?><rss version="2.0">
<channel>
<title>domain.com RSS feed</title>
<link>http://www.domai.com</link>
<description>Upcoming events</description>
<language>en-us</language><copyright>Copyright (C) 2012 domain.com</copyright>
<item>
<title>ΕΙΣΒΟΛΕΑΣ & EVERSOR - O μÏθος καταÏÏÎει @ Gagarin 205 Live Music Space</title>
<description><a href="http://www.domain.com/event.php?eid=209"><img WIDTH="150" HEIGHT="220" style="width:150px;height:220px;padding-bottom:10px;padding-right:10px;" src="http://www.comain.com/image.php?source=events%2F985d6bfa8e35df69471b1ecdb9ed187e%2Fimages%2Fdefault%2Feisvo.jpg&w=150&h=220&out=raw"></a><p><p><span style="color: #333333; font-family: lucida grande, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16px;">&Epsilon;&Iota;&Sigma;&Beta;&Omicron;&Lambda;&Epsilon;&Alpha;&Sigma; &amp; EVERSOR - "&Omicron; &Mu;&Upsilon;&Theta;&Omicron;&Sigma; &Kappa;&Alpha;&Tau;&Alpha;&Rho;&Rho;&Epsilon;&Epsilon;&Iota;" TOUR LIVE @ &Alpha;&Theta;&Eta;&Nu;&Alpha; (GAGARIN205), &Sigma;&Alpha;&Beta; 22/12</span><br style="color: #333333; font-family: lucida grande, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16px;" /><br style="color: #333333; font-family: lucida grande, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16px;" /><span style="color: #333333; font-family: lucida grande, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16px;">doors open: 20.00</span><br style="color: #333333; font-family: lucida grande, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16px;" /><span style="color: #333333; font-family: lucida grande, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16px;">ticket price: 10e</span><br style="color: #333333; font-family: lucida grande, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16px;" /><span style="color: #333333; font-family: lucida grande, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16px;">guests: 12os Pithikos &amp; Hatemost</span><br style="color: #333333; font-family: lucida grande, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16px;" /><span style="color: #333333; font-family: lucida grande, tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 16px;">opening: Gelws</span></p></div></description><link>http://www.www.domain.com/events/Hip-Hop+Rap/%CE%95%CE%99%CE%A3%CE%92%CE%9F%CE%9B%CE%95%CE%91%CE%A3-EVERSOR-%CE%9F-%CE%9C%CE%A5%CE%98%CE%9F%CE%A3-%CE%9A%CE%91%CE%A4%CE%91%CE%A1%CE%A1%CE%95%CE%95%CE%99-0</link>
<pubDate>Sat, 22 Dec 2012 20:00:00 +0200</pubDate>
</item>
</channel>
</rss>
당신이 볼 수 있듯이 문제는 항목 제목에 있습니다.
누군가 내가 방향을 제시 할 수 없기 때문에 방향을 제시 할 수 있습니다. 나는 변환하여 $event['eTitle']
인코딩이 작동하지만 운이 없다고 생각했다.
편집 : 텍스트 utf8_general_ci로 DB에 저장
편집 2 :이 보인다가 작동 ->
utf8_encode(htmlentities($event['eTitle'],ENT_COMPAT,'utf-8'))
하지만 W3C 유효성 검사기에 내가이 오류 : 열 268 : XML 구문 분석 오류 : : 1 : 268 : 정의되지 않은 개체
및 강조 표시된 섹션은 다음과 같습니다.
EVERSOR - O μÃ\x8fÂ\x8dθ
\ x8f 및 \ x8d는이 오류를 발생시킵니다. 하지만 왜?
데이터베이스에 필드가 저장되는 방식은 무엇입니까? –
텍스트 utf8_general_ci – Syd
'ΕΙΣΒΟΛΕΑΣ & EVERSOR - O ЎЎࠏκκκ @ @ @ Gagarin 205 라이브 뮤직 스페이스' 나에게 잘 보입니다. 출력물을보기 위해 무엇을 사용하고 있습니까? (나는 Notepad ++를 사용하고 Encoding-> UTF8을 설정했다) –