SQL Karakterek
Szerző
Üzenet
Üdv!
Van nekem egy Weboldalam, amin két külön adatbázisból iratok ki adatokat.
Mind kettő adatbázisban van egy-egy oszlop amiben szöveget tárolok. A szöveg ide egy külső forrásból kerül be az alábbi formában: PikHácsúú# (Ez csak egy példa a karakterekre.) Azonban csak az egyik adatbázisból kiolvasva alakul át rendes UTF-8-ra: PikHácsúú (Ez a példa arra, aminek kellene kinéznie.)
Ezért több helyen is kiolvashatatlan a szöveg az oldalon.
Ellenőriztem, hogy a táblák szerkezete ugyan olyan. Azt a táblát, ami működik saját kezűleg készítettem el, míg a nem megfelelően működőt egy weblap motor generálta.
Remélem tud valaki segíteni. Köszönöm!
UI. Nem tudom, hogy lenkelhetem a problémás oldalakat, de inkább nem teszem nehogy reklám miatt törölve legyen.
Van nekem egy Weboldalam, amin két külön adatbázisból iratok ki adatokat.
Mind kettő adatbázisban van egy-egy oszlop amiben szöveget tárolok. A szöveg ide egy külső forrásból kerül be az alábbi formában: PikHácsúú# (Ez csak egy példa a karakterekre.) Azonban csak az egyik adatbázisból kiolvasva alakul át rendes UTF-8-ra: PikHácsúú (Ez a példa arra, aminek kellene kinéznie.)
Ezért több helyen is kiolvashatatlan a szöveg az oldalon.
Ellenőriztem, hogy a táblák szerkezete ugyan olyan. Azt a táblát, ami működik saját kezűleg készítettem el, míg a nem megfelelően működőt egy weblap motor generálta.
Remélem tud valaki segíteni. Köszönöm!
UI. Nem tudom, hogy lenkelhetem a problémás oldalakat, de inkább nem teszem nehogy reklám miatt törölve legyen.
Szia!
Az adatbázisban a magyar ékezetes betűk letárolásához, kiolvasásához az utf8_general_ci kódolást érdemes (kell) használni.
Ehhez azonban a megfelelő, olvasható szöveget kell kódolnia.
A külső forrásból származó szöveget szerintem más kódolásban kapod meg, így a kiolvasása sem lesz olvasható.
Ezért
Én írtam egy variánst arra, hogy a fórumban lehessen használni ékezetes karaktereket is a linkeknél, mivel ez manapság már egyre jobban divat, viszont a phpbb fórum nincs erre felkészítve.
Tehát ez csak egy tipp, de ez alapján "házibarkács" módon meg tudod oldani.
Mivel nem tudom így látatlanul, hogy milyen kódolású szöveget kapsz a külső forrásból, az egyes ékezetes betűkhöz tartozó kódolást neked kell betűnként a "var papa" változóba berakni.
.
Az adatbázisban a magyar ékezetes betűk letárolásához, kiolvasásához az utf8_general_ci kódolást érdemes (kell) használni.
Ehhez azonban a megfelelő, olvasható szöveget kell kódolnia.
A külső forrásból származó szöveget szerintem más kódolásban kapod meg, így a kiolvasása sem lesz olvasható.
Ezért
- vagy a külső forrásból származó szöveget először vissza kell kódolni "olvasható" formátumra, majd ezután letárolni.
- vagy letárolod, és a kiolvasáskor kódolod át olvasható szövegre.
Én írtam egy variánst arra, hogy a fórumban lehessen használni ékezetes karaktereket is a linkeknél, mivel ez manapság már egyre jobban divat, viszont a phpbb fórum nincs erre felkészítve.
Tehát ez csak egy tipp, de ez alapján "házibarkács" módon meg tudod oldani.
Kód:
var str = olvashatatlan szöveg;
var replace = new Array("á", "é", "í", "ö", "ő", "ó", "ú", "ü", "ű", "Á", "É", "Í", "Ö", "Ő", "Ó", "Ú", "Ü", "Ű");
var papa = new Array("%c3%a1", "%c3%a9", "%c3%ad", "%c3%b6", "%c5%91", "%c3%b3", "%c3%ba", "%c3%bc", "%c5%b1", "%c3%81", "%c3%89", "%c3%8d", "%c3%96", "%c5%90", "%c3%93", "%c3%9a", "%c3%9c", "%c5%b0");
for (var i=0; i<replace.length; i++) {
str = str.replace(papa[i], replace[i]);
}
olvashatatlan szöveg (most már olvasható) = str;
Mivel nem tudom így látatlanul, hogy milyen kódolású szöveget kapsz a külső forrásból, az egyes ékezetes betűkhöz tartozó kódolást neked kell betűnként a "var papa" változóba berakni.
.
Engedelmeddel megmutatom, hogy pontosan miről is van szó.
1. Adatbázisban:
- Egy oszlop és egy sor keresztezésében így található meg: Hirdetés
- Ha a weboldalon mutatom meg az értéket, akkor szépen, így jelenik meg: Hirdetés
2. Adatbázisban:
- Egy oszlop és egy sor keresztezésében szintén így található meg: Hirdetés
- Ha a weboldalon mutatom meg az értéket, akkor meg ugyan így mutatja: Hirdetés
Megjegyzem, az 1. adatbázisban lévő táblát én csináltam, míg a 2. adatbázisban lévőt a weboldalon motorja készítette. Tovább ellenőriztem, hogy az 1. az latin1_swedish_ci kódoltást használt legelőször, míg a 2. utf8_hungarian_ci-t. Ezt a későbbiekben latin1_swedish_ci-re állítottam, de semmi nem változott.
Ha lehet, akkor mutatom is a dolgot.
1. Eset: http://www.counter16strike.hu/index.php?page=s3_kitiltasok
Itt megfigyelhető az Indok és Admin oszlopban, hogy szépen írja ki és ismétlem az adatbázisban cifrán van.
2. Eset: http://www.counter16strike.hu/index.php?page=s3
Itt megfigyelhető a Játékos és Admin oszlopban, hogy ugyan úgy cifrán írja ki, mint az adatbázisban van.
Tovább, az említett segítséged alapján az első dolog nem kivitelezhető, mert a külső forrásom egy játékból származik. A másodikat meg nem tudom mindenhol átírni és rengeteg olyan karakter van, amit használnak és a külső forrásból kerül be.
Az a furcsa, hogy az 1. esetben jól mennek a dolgok, míg a 2. esetben nem jók, holott ugyan úgy kellene mennie. Én arra gyanakszom, hogy a hiba a szerkezetben van, de egyszerűen nincs több opció amit módosíthatnék.
Látható, hogy nem vagyon nagyon gyakorolt a dologban. Éppen csak próbálgatom ezt a dolgot.
UI.: És köszönöm az eddigi segítséged is!
1. Adatbázisban:
- Egy oszlop és egy sor keresztezésében így található meg: Hirdetés
- Ha a weboldalon mutatom meg az értéket, akkor szépen, így jelenik meg: Hirdetés
2. Adatbázisban:
- Egy oszlop és egy sor keresztezésében szintén így található meg: Hirdetés
- Ha a weboldalon mutatom meg az értéket, akkor meg ugyan így mutatja: Hirdetés
Megjegyzem, az 1. adatbázisban lévő táblát én csináltam, míg a 2. adatbázisban lévőt a weboldalon motorja készítette. Tovább ellenőriztem, hogy az 1. az latin1_swedish_ci kódoltást használt legelőször, míg a 2. utf8_hungarian_ci-t. Ezt a későbbiekben latin1_swedish_ci-re állítottam, de semmi nem változott.
Ha lehet, akkor mutatom is a dolgot.
1. Eset: http://www.counter16strike.hu/index.php?page=s3_kitiltasok
Itt megfigyelhető az Indok és Admin oszlopban, hogy szépen írja ki és ismétlem az adatbázisban cifrán van.
2. Eset: http://www.counter16strike.hu/index.php?page=s3
Itt megfigyelhető a Játékos és Admin oszlopban, hogy ugyan úgy cifrán írja ki, mint az adatbázisban van.
Tovább, az említett segítséged alapján az első dolog nem kivitelezhető, mert a külső forrásom egy játékból származik. A másodikat meg nem tudom mindenhol átírni és rengeteg olyan karakter van, amit használnak és a külső forrásból kerül be.
Az a furcsa, hogy az 1. esetben jól mennek a dolgok, míg a 2. esetben nem jók, holott ugyan úgy kellene mennie. Én arra gyanakszom, hogy a hiba a szerkezetben van, de egyszerűen nincs több opció amit módosíthatnék.
Látható, hogy nem vagyon nagyon gyakorolt a dologban. Éppen csak próbálgatom ezt a dolgot.
UI.: És köszönöm az eddigi segítséged is!
Szerintem nem értetted, amire céloztam, bár lehet, hogy nem fejeztem ki magam eléggé érthetően.
Az a véleményem, hogy az adatbázisba a külső forrásból kódolatlanul jön az anyag, ami így kerül letárolásra, és így ezért azt is kapod vissza.
Ezért írtam azt, hogy a 2. adatbázisba vagy
1. a letárolás előtt kellene az ékezetes betűket vissza kódolni, vagy
2. a kiolvasáskor kellene visszakódolni, és az így átkódolt szöveget megjeleníteni.
Az 1. pont az ajánlott, mert azt csak egyszer kell megoldani.
Az meg kifejezetten előnyös lenne, ha mindenhol ugyanazt a kódolást használnád, és a magyar nyelvű oldalakon ajánlott a utf8_general_ci kódolás.
Az a véleményem, hogy az adatbázisba a külső forrásból kódolatlanul jön az anyag, ami így kerül letárolásra, és így ezért azt is kapod vissza.
Ezért írtam azt, hogy a 2. adatbázisba vagy
1. a letárolás előtt kellene az ékezetes betűket vissza kódolni, vagy
2. a kiolvasáskor kellene visszakódolni, és az így átkódolt szöveget megjeleníteni.
Az 1. pont az ajánlott, mert azt csak egyszer kell megoldani.
Az meg kifejezetten előnyös lenne, ha mindenhol ugyanazt a kódolást használnád, és a magyar nyelvű oldalakon ajánlott a utf8_general_ci kódolás.
Értettem én, csak próbáltam segítséget adni, hogy segíthess nekem azt kitalálni itt miért nem jó máshol meg miért. Igen.
Bár már ezzel is nagyon sokat segítettél. Köszönöm szépen, valószínűleg az 1. pontoddal kezdek valamit.
Bár már ezzel is nagyon sokat segítettél. Köszönöm szépen, valószínűleg az 1. pontoddal kezdek valamit.
Nem készíthetsz új témákat ebben a fórumban.
Nem válaszolhatsz egy témára ebben a fórumban.
Nem módosíthatod a hozzászólásaidat a fórumban.
Nem törölheted a hozzászólásaidat a fórumban.
Nem szavazhatsz ebben fórumban.
Nem válaszolhatsz egy témára ebben a fórumban.
Nem módosíthatod a hozzászólásaidat a fórumban.
Nem törölheted a hozzászólásaidat a fórumban.
Nem szavazhatsz ebben fórumban.