我正在为我的网站开发一个RSS订阅源。当我尝试解码内容时,问题就变成了,某些字符没有被正确解码。
这是我的表格“html”中我的字符串utf8_spanish2_ci
整理:
我使用utf8_encode
保存数据。
<p style="text-align: center">Calidad: ⦠BRrip<br />Peso: ⦠693 Mb<br />Duración: ⦠1:33:09 Hs.<br />Codec video: ⦠Xvid<br />Formato: ⦠Avi<br />Resolución: ⦠640 x 272<br />Bitrate del video: ⦠904 Kbps<br />Frame rate: ⦠23.976 fps<br />Idioma: ⦠Español Latino<br />Codec Audio: ⦠MP3<br />Bitrate Audio: ⦠128 Kb/s 44100hz<br />Subtitulos: ⦠No Tiene</p>
字符串输出:
使用utf8_decode
时,某些字符无法正确解码
<p style="text-align: center">Calidad: �?� BRrip<br />Peso: �?� 693 Mb<br />Duración: �?� 1:33:09 Hs.<br />Codec video: �?� Xvid<br />Formato: �?� Avi<br />Resolución: �?� 640 x 272<br />Bitrate del video: �?� 904 Kbps<br />Frame rate: �?� 23.976 fps<br />Idioma: �?� Español Latino<br />Codec Audio: �?� MP3<br />Bitrate Audio: �?� 128 Kb/s 44100hz<br />Subtitulos: �?� No Tiene</p>
字符串应为:
<p style="text-align: center">Calidad: … BRrip<br />Peso: … 693 Mb<br />Duración: … 1:33:09 Hs.<br />Codec video: … Xvid<br />Formato: … Avi<br />Resolución: … 640 x 272<br />Bitrate del video: … 904 Kbps<br />Frame rate: … 23.976 fps<br />Idioma: … Español Latino<br />Codec Audio: … MP3<br />Bitrate Audio: … 128 Kb/s 44100hz<br />Subtitulos: … No Tiene</p>
这是我的完整代码:
<?php
header('Content-Type: application/rss+xml; charset=utf-8');
echo '<?xml version="1.0" encoding="utf-8"?>';
echo "\n<rss version='2.0'>";
echo "<channel>\n";
echo "<title>Feed Juegos</title>\n";
echo "<link>http://example.com</link>\n";
echo "<description>Ultimas Entradas Xxx Javi</description>\n";
DEFINE ('USER', 'zadmin_new');
DEFINE ('PWW', 'mierda');
DEFINE ('HOST_BD', 'localhost');
DEFINE ('DBNAME', 'zadmin_warezo');
$conexion = mysql_connect(HOST_BD, USER, PWW) or
die ('No se pudo conectar a la BD');
mysql_select_db(DBNAME) or die ('Error in connection');
$query= "SELECT * FROM posts WHERE id_cat = 6 ORDER BY posts.fecha DESC LIMIT 0,18";
$result = mysql_query($query) or die ('ERROR IN QUERY');
while ($fila = mysql_fetch_array($result, MYSQL_ASSOC))
{
$desc = $fila['html'];
echo "<item>\n";
echo "<title>".$fila['titulo']."</title>\n";
echo "<link>http://example.com/peliculas-series/2/".$fila['id']."/".$fila['slug'].".html</link>\n";
echo "<description>
".$desc."
</description>";
echo "</item>\n";
}
echo "</channel>";
echo "</rss>";
?>
答案 0 :(得分:0)
使用htmlentities()和html_entity_decode()代替
使用htmlentities()
之后的特殊字符存储文本$text = htmlentities("çéà"); // resulting in $text = "çéà";
从db中重新执行后,只需使用html_entity_decode()
html_entity_decode($text); // resulting in çéà
不需要utf8员工
希望这会有所帮助