ugrás a tartalomhoz

Ékezetes karakter probléma

szpistomi · 2009. Dec. 28. (H), 15.51
Hali!

Bocsi de ismét megakadtam, ráadásul olyan témában, amihez hasonlókat találtam, csak még mindig nem tiszta...

Íródik egy weboldal, aminek MySQL-ben tárolt tartalmát egy egyszerű, webes felületen lehet majd szerkeszteni.
A nyelvi kódolással van bajom. A PHP fájlok UTF-8 kódolásúak, az adatbázis táblák egybevetése "utf8_unicode_ci" a PHPMyAdmin szerint.

Ha a PHPMyAdmin-ban írok át egy content értéket, az oldal nyilvános része, és a PHPMyAdmin is szépen megjelenítik a beírt ékezetes karaktereket. A webszerkesztő PHP megjelenítése viszont már gáz, mert ott kérdőjelek jelennek meg az ékezetes karakterek helyén. Ha ezeket javítom, és a webes szerkesztővel íratom be az adatbázisba, akkor a szerkesztővel újra megnyitva teljesen jól néz ki, de az oldal nyilvános része, és a PHPMyAdmin is rossz karaktereket ad vissza.

Hogyan lehetne rávenni őket, hogy működjenek együtt?
Valamit kifelejtettem, csak nem tudok rájönni, hogy mit...

A szerkesztő kódja: (csak a "dolgozó" rész, az oldal indexe több fájl include-olásával készül, azokat nem mellékelem, ez a szakasz is include-olva van, másik fájlból)
  1. <?php  
  2. if (!isset($szerk_oldal_ID)) {  
  3.     //ez a választó  
  4.     echo "<form name=oldal_valaszto id=1 method=post action='index.php?oldal=webszerkeszto'>A <select size=1 name=szerk_oldal_ID>";  
  5.     $oldalak_szama = mysql_result(mysql_query('SELECT COUNT(*) FROM `bg_page`'), 0);  
  6.     $pid = 1;  
  7.     do {  
  8.         $sql=sprintf("SELECT * FROM `bg_page` WHERE `id`='$pid'");  
  9.         $lekerdezes=mysql_query($sql);    
  10.         $adat=mysql_fetch_assoc($lekerdezes);  
  11.         if (isset($adat['name'])) {  
  12.             echo "<option value=";  
  13.             echo $adat['id'];  
  14.             echo ">";   
  15.             echo $adat['name'];  
  16.             echo "</option>";  
  17.         }  
  18.         $pid++;  
  19.     }  
  20.     while ($pid <= $oldalak_szama);   
  21.     echo "</select> oldal szerkesztése. <input type=submit value=Mehet!></form>";  
  22. else if (isset($szerk_oldal_ID) & !isset($valtoztat)){  
  23.     //ez a szerkesztő  
  24.     echo "Az oldal ID-je: " . $szerk_oldal_ID . "<br>";  
  25.     $query=sprintf("SELECT * FROM `bg_page` WHERE `id` like '$szerk_oldal_ID'");  
  26.     $lekerdezes=mysql_query($query);     
  27.     $adat=mysql_fetch_assoc($lekerdezes);  
  28.     echo "<form action='index.php?oldal=webszerkeszto&valtoztat=igen' method=post>";  
  29.     echo "<input type=hidden name=szerk_oldal_ID value=".$szerk_oldal_ID.">";  
  30.     echo "Menü neve: <input type=text name=menu_name size=30 value=".$adat['name']."><br> ";  
  31.     echo "Menü tartalma: <a href=tag.php target=new>A használható HTML parancsok</a><br>  
  32.     <center>  
  33.     <textarea rows=20 name=content cols=130>".$adat['content']."</textarea>  
  34.     </center>";  
  35.     mb_convert_encoding($_POST['content'], 'ISO-8859-2''UTF-8');  
  36.     echo "<p align=right><input type=submit value=Változtatás></form></p>";  
  37. else if (isset($valtoztat)) {  
  38.     //ez az adatbázis író rész  
  39.     $query = "UPDATE `bg_page` SET `name` = '$menu_name',  
  40.     `content` = '$content' WHERE `id` = '$szerk_oldal_ID' ;";  
  41.     $result = mysql_query($query);  
  42.     if (mysql_affected_rows() > 0) {  
  43.         // Siker  
  44.         echo "A módosítás sikerült!";  
  45.         } else {  
  46.         // Bukás  
  47.         echo "A módosítás nem sikerült, vagy egyező tartalom!";  
  48.         }  
  49. }  
 
1

karakter kódolás

ironwill · 2009. Dec. 28. (H), 19.18
Szia!

Ellenőrizni kellene, hogy a request, response kódolások mindenhol UTF-8-asok legyenek.

Nekem ilyen esetben segített, ha a mysql kapcsolat(ok)nál is beállítottam a kódolást.
http://php.net/manual/en/function.mysql-set-charset.php

Egyébként van különbség a böngészők, karakter kódolási szabály kezelése között is.
(szép kifejezés)

Érdekesség képpen:
http://kore-nordmann.de/blog/php_charset_encoding_FAQ.html#does-accept-charset-help-in-html-forms

üdv, Gábor
2

Megoldva...

szpistomi · 2010. Jan. 10. (V), 17.44
Hali!

Nos, ismét elővettem az oldalt, és újra átnéztem az egészet. Egy soron buktam el, ami include-olva volt (a fejlécben):
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
Ezt cseréltem erre:
  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">  
És helyreállt a rend...
Figyelmetlen voltam, tanultam belőle.