ugrás a tartalomhoz

Adatbázis: UTF-8, weboldal: ISO-8859-1

kisstoth · 2005. Dec. 31. (Szo), 15.15
Üdvözletem,

Van egy adatbázis (UTF-8), benne egy tábla sok-sok rekorddal, kalapos ékezetű tartalommal (õ, û). A weboldal kódolása ISO-8859-1. A probléma ott jelentkezik, mikor a weboldalon keresek (szürke mezei mysql_query, LIKE % %).

Van egy ilyen rekordom: "hõség". Ha rákeresek (input mezőbe beírom) "hőség", nem dob ki egyet se. Ha beírom "hoseg", behozza. Hogy lehetne ezt megoldani? Mármint hogy az "ő" betűt alakítsa "o"-ra?

(A kódolásokon nem lehet változtatni.)

Előre is köszönöm
 
1

str_replace

tiny · 2005. Dec. 31. (Szo), 15.34
Ez a függvény a 3. paraméterben megadott változóban lecseréli az első paramétert a 2-ban találhatóra.
Példa:

<?php
$input_mezo = str_replace("ó", "o", $input_mezo);
?>
Üdv:
Mr.Tiny
2

BINARY

Anonymous · 2005. Dec. 31. (Szo), 15.45
Próbálkozz a LIKE BINARY '%$szoveg%' módszerrel, bár ez a kapalos ő-kre nem valószínű, hogy jó eredményt ad, de az ékezetes keresésre minden bizonnyal.
Szerintem a kalapos ő-ket és hullámos ű-ket egy külön scripttel meg kellene szüntetned az adatbázisban.

Gyulus
3

Konvertálás

Balogh Tibor · 2005. Dec. 31. (Szo), 17.23
Az egyik megoldás az, hogy az adatbázisnyitás után azonnal kiadod a következő utasítást:

<?php
…
 mysql_query("SET names 'latin1';");
Ekkor az adatokat is a megadott kósolásban kapod vissza, a továbbiakban nem kell foglalkoznod a kódólás beállításával.

A másik megoldás, hogy a sql utasítást konvertálod át a megfelelő kódolásra mielőtt futattnád. Ekkor az adatokat abban a kódolásban kapod vissza, ahogy az adatbázisban szerepelnek.

<?php
…
 $sql = iconv('iso-8859-2', 'utf-8', $sql);
Ebben az esetben minden lekérdezés végrehajtása előtt végre kell hajtanod a konvertálást.

Az igazi megoldás az lenne, ha nem lenne eltérés az adatbázis és a kiírandó adatok kódolása között. Maga a konvertálás is időigényes folyamat, feleslegesen nem érdemes ide-oda konvertálgatni.