Witam
Prowadzę niewielki serwis ogłoszeniowy i mam pewien problem z wyświetlaniem się litery "ó" na stronie
Problem dotyczy sytuacji w gdy na stronie główej wyświetla się tytuł ogłoszenia w formie linku , a pod spodem kilkadziesiąt pierwszych wyrazów z opisu z ogłoszenia i w tym opisie zamiast litery "ó" wyskajuje krzaczek. W całym serwisie nie występują żadne problemy , czy błędy z kodowaniem polskich znaków. Również przechodząc do szczegółów ogłoszenia wszystko jest ok.
W oryginalnym projekcie skryptu nie ma opcji wyświetlania początku treści ogłoszenia pod jego tytułem na głównej stronie. Pomysł ten zaczerpnięty został z forum autora skryptu (zagranicznego) i rozwiązanie to chyba nie było testowane z polską wersją jezykową.

Poniżej wszystko co może pomóc w rozwiązaniu problemu.

Serwis zbudowany jest na szablonach smatry.
Sposób na dodanie opisu pod tytułem ogłoszenia był taki:

w links.php dopisać 1 wiersz (to ten ostatni wiersz , czytat pokazuje tylko część kodu tego pliku)
  1. <?php
  2. $fArray[$ad_id]["CATEGORYNAME"] = $catname;
  3. $fArray[$ad_id]["CATIMAGE"] = $cat_image;
  4. $fArray[$ad_id]["DATE_URL"] = "<a href=\"?catid=$catid&=ad_id&searchword=$searchword\">";
  5. $fArray[$ad_id]["DATEADDED"] = $ad_date;
  6. $fArray[$ad_id]["EXPIREDATE"] = $ad_date_expire;
  7. $fArray[$ad_id]["VIEWED"] = $ad_views;
  8. $fArray[$ad_id]["SPECIAL"] = $row["ad_is_special"];;
  9. $fArray[$ad_id]["COLOR"] = $color;
  10. $fArray[$ad_id]["LINK"] = linkDetail($ad_id);
  11. $fArray[$ad_id]["TITLE"] = $ad_title;
  12. $fArray[$ad_id]["REGDATE"] = $ad_date;
  13. $fArray[$ad_id]["NUM_VOTERS"] = $ad_voters;
  14. $fArray[$ad_id]["ID"] = $ad_id;
  15. $fArray[$ad_id]["ad_id"] = $ad_id;
  16. $fArray[$ad_id]["AD_OWNER_NOTIFIED"]=$row["ad_owner_notified"];
  17. $fArray[$ad_id]["AD_SOLD"]=$row["ad_is_sold"];
  18. $fArray[$ad_id]["NB"]  = $i;
  19. $fArray[$ad_id]["DESCRIPTION"] = $ad_description;
  20. ?>



a w templatce :latest_frontpage.tpl dopisać $ad.DESCRIPTION z ogranicznikiem wyświtlania liter, co dało taki zapis kodu w wierszu tabeli:
  1. <td class="pointer"><a href="{$ad.LINK}">
  2. {if $ad.SPECIAL}<b>{/if}{$ad.TITLE|truncate:60:"...":true}{if $ad.SPECIAL}</b>{/if}</a><br />
  3. <small>{$ad.DESCRIPTION|truncate:100:"...":true}<a href="{$ad.LINK}">>></a><small></td>


No i wszystko pięknie poza "ó"

Dziwi mnie to że opis ogłoszenia zupełnie poprawnie wyświetla się, gdy klikniemy na link i otworzy się podstrona ze szczegółami :tytuł , treść ogłoszenia itp.

Zauważyłem, że tam nieco inaczej wywoływana jest zmienna ( tzn. $ad_description, a nie $ad.DESCRIPTION) poprzedzona wcześniej tagiem form method="post" (nie wiem czy ma to jakiekolwiek znaczenie)

to jest templatka ze szczegółami ogłoszenia detali.tpl (cytat zawiera tylko część kodu)
  1. <h1>{$ad_title}</h1>
  2. {if $sold==1}<p class="sold"><b>{$smarty.const.LA_AD_IS_SOLD}</b></p>{/if}
  3.  
  4.  
  5. <form method="post" action="detail.php">
  6. <table width="100%" style="align:left">
  7. <tr>
  8. <td colspan="2"><h2>{$smarty.const.DESCRIPTION}:</h2></td>
  9. </tr>
  10. <tr>
  11. <td colspan="2">{$ad_description}</td>
  12. </tr>



Skoro w obu przypadkach dane są pobierane z tej samej tablicy, pradopodobnie czegoś brakuje w powyższych kodach , aby wyświetlało prowidłowe "ó" - niestety nie mam pojęcia czego.

Pozstałe informacje:
- wszystkie pliki kodowane są w utf-8 (jest odpowienie meta .....charset=utf-8")
- baza jest kodowana w latin
- szukałem na róznych forach i próbowałem róznych "recept" - bez efektu
- na php się nie znam - więc ewentualny opis rozwiązania poproszę łopatoloicznie
- jeśli coś jeszcze powinieniem podać - to podam



===============
Sprawa nieaktualna , temat do zamknięcia.

PS -> pomogło zastąpienie $ad_description; =>$row["ad_description"]; w 19 wierszu kodu z pierwszego "cytatu"