2012-02-01 2 views
0

Возможный дубликат:
PHP htmlentities() not working as expectedhtmlentities преобразует товарный знак в â ¢

Я использую htmlentities преобразовать символ товарного знака в htmlentity, но это дает мне â�¢. Я делаю что-то неправильно

вот мой код

<?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?> 
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://www.base.google.com/cns/1.0"> 
<channel> 
<title>Spray Foam Systems</title> 
<link>http://www.sprayfoamsys.com/store/</link> 
<description>Spray Foam Rigs, Spray Foam Equipment, Sprayfoam Parts and Supplies.</description> 
<?php 
$con = mysql_connect(REMOVED) or die(mysql_error()); 
    if (!$con) 
     { 
      die('Could not connect: ' . mysql_error()); 
     } 
    mysql_select_db("sprayfoa_store", $con); 
    mysql_query("SET NAMES 'utf8'", $con); 

    $query = mysql_query("SELECT * FROM `catalog_product_flat_1` WHERE `visibility` = 4 ORDER BY entity_id asc") 
    or die(mysql_error()); 
?> 
<?php 
    while($row = mysql_fetch_array($query)) 
     { 
?> 
<item> 
<g:id><?php echo $row['entity_id']; ?></g:id> 
<title><?php echo htmlentities($row['name']); ?></title> 
<description><?php echo htmlentities(str_replace(array("\r\n", "\n"), ' ', $row['short_description'])); ?></description> 
<g:google_product_category>Business &amp; Industrial &gt; Construction</g:google_product_category> 
<g:product_type>Spray Foam Parts &amp; Supplies &gt; Fusion AP Parts</g:product_type> 
<link>http://sprayfoamsys.com/store/<?php echo $row['url_path']; ?></link> 
<g:image_link>http://sprayfoamsys.com/store/media/catalog/product<?php echo $row['small_image']; ?></g:image_link> 
<g:condition>new</g:condition> 
<g:availability>in stock</g:availability> 
<g:price><?php echo $row['price']; ?></g:price> 
<g:brand><?php $entity_id = $row['entity_id']; $query2 = mysql_query("SELECT * FROM `catalog_product_entity_varchar` WHERE entity_id = '$entity_id' AND attribute_id = '127'") or die(mysql_error()); while($row2 = mysql_fetch_array($query2)) { echo $row2['value']; } ?></g:brand> 
<g:mpn><?php echo $row['sku']; ?></g:mpn> 
</item> 
<?php 
} 
mysql_close($con); 
?> 
</channel> 
</rss> 
+0

Вам нужен третий параметр [ 'htmlentities ($ ул $ флаги, "UTF-8")'] (http://php.net/htmlentities) – mario

+0

@Brett Вы действительно, * действительно * должны использовать DOMDocument для создания XML. Это может быть больше кода, но создание XML, как вы сейчас, просто неправильно. Также, узнайте о соединениях SQL, этот запрос внутри цикла совершенно не нужен. – Tomalak

ответ

10

Согласно the manual, когда не подавая эту функцию с помощью ISO-8859-1 строки, вам необходимо предоставить кодовую:

echo htmlentities($row['name'], ENT_QUOTES, 'UTF-8'); 

Обновление март 2015 г.: Обратите внимание, что после этого ответа набор символов по умолчанию, используемый этой функцией, был изменен для разных версий:

  • PHP < 5,4: ISO-8859-1
  • PHP 5.4 & 5,5: UTF-8
  • PHP> = 5.6: default_charset установка (что очень приветствуется, и как это должно быть в первую очередь).
+0

Хорошая магия! Работает для меня, PHP noob. – felixwcf

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