Kovács Gyula (MiniDisk) 0 Share Posted May 15, 2006 Nekem jól működik. A példa fentebb. Az UTF8 meg kizárólag az angolban jó. Link to comment Share on other sites More sharing options...
h.arpad 0 Share Posted May 15, 2006 Addig nincs is gond, amíg a helyén marad a MySQL-tábla... A gondok akkor jönnek, ha költöztetni kell, és gondolkodsz azon, miért is ne lenne jó a másik charset. Link to comment Share on other sites More sharing options...
payskin 905 Share Posted May 16, 2006 A fõ baj nem a tábla költöztetésével van, hanem hogy a MySQL-t nem lehet egyértelmûen vagy erre, vagy arra beállítani. Illetve de lehet: egyértelmûen utf-8-ra lehet. Kár hogy ebben az esetben valahogy mégis hullámos lesz az õ, mire átjön a szöveg a PHP-n az oldalba. Érdekes, hogy phpMyAdminban jók az ékezetek, tehát... gõzöm nincs, mi történik. Nézegettem a PMA forrását, egy k szót nem értek belõle. Ha az alapértelmezett karakterkészletet latin2-re tolom, akkor az lesz, amit fentebb láttok: a SESSION változók egy része utf-8-on marad, isten tudja, miért. Na, ezt lehet átállítani, ha mindenféle hülye SET parancsokat küldözgetek a MYSQL-nek. Pont azt az állapotot szeretném elérni, hogy a MYSQL-ben (valahogy) beállítom a latin2-t, minden latin2 lesz, a HTML forrásban beállítom az iso-8859-2-t, és mûködik anélkül, hogy bármi mást kéne tennem. Álmodj királylány. Link to comment Share on other sites More sharing options...
Kovács Gyula (MiniDisk) 0 Share Posted May 16, 2006 De Balázs: NEKEM ÍGY VAN, és működik! Nem igazán értem, hogy hogy nem lehet átállítani latin2-re a táblát ... Biztos hogy jó az sql motorral minden? Jól működik, meg ilyesmi? Esetleg megnézzem a tárhelyszolgáltatóm pontos adatait? (SQL motor, php verzió, stb.) Link to comment Share on other sites More sharing options...
arpsoft 12 Share Posted May 16, 2006 @Balázs: Nézd meg a forrásban, hogy a Phpmyadmin oldala milyen kódolással jön! Link to comment Share on other sites More sharing options...
payskin 905 Share Posted May 16, 2006 UTF-8-cal. De az enyém is. Nála jók az ékezetek, nálam nem. @MD: nem hiszem, hogy engedi megnézni a beállításokat, de ha mégis, akkor sem érünk vele semmit. Valószínûleg valamilyen Linuxon futtat MySQL-t, nagyjából semmi köze nincs a windowsos változathoz, amit én futtatok. Legalábbis az IDG szervereken levõ MySQL teljesen másképp viselkedik, más környezeti változókat mutat, a phpMyAdmin tízszer annyi kódolást kínál fel, pedig csont ugyanazt a verziót futtatom, eh... Link to comment Share on other sites More sharing options...
payskin 905 Share Posted June 17, 2006 Eltelt másfél hónap. Ma felraktam a noteszgépemre a PHP-MySQL duót, beállítottam a MySQL-t latin2-re, lementettem a PCW cikkadatbázist egy szép 10 megabájtos szövegfájlba, bedumpoltam a MySQL-be (nem adtam meg semmilyen kódolást, magától minden mezõt latin2-re vett), és már megint nem tudom kiolvasni az õ és û betûket latin2-ként, kérdõjelek jönnek. PHPMyAdminban minden tökéletes. Hát komolyan mondom, ezen megzavarodok. HÁT TÉRDRE BORULOK, MEGOLDÓDOTT!!! Nem hiszem el! :olé: Szétolvastam a fél világot, beleértve a weblabor több tudományos értekezését és fórumtémáját is, és mindig azon dühöngtem, hogy szófosás az van, de gyakorlati tanács az nincs. Erre itt a megoldás, egy eldugott kis témában, ahol csak néhány hozzászólás van, de ott van köztük a lényeg. Eh, ezt is megértük! Link to comment Share on other sites More sharing options...
Sanzi 0 Author Share Posted June 17, 2006 @Balázs Ma már nem fogok neki, de holnap megnézem. Ha nekem is működik, eszméletlen hálás leszek. Következő Fórumtalin minimum egy meghívás valamire. Link to comment Share on other sites More sharing options...
h.arpad 0 Share Posted June 18, 2006 Tulajdonképpen nincs sok, amit olvasnod kéne. @Spányik Balázs: A Google keresõbe beírod: "ékezetes karakter helyett kérdõjel" és lám... Ha a szerverre phpMyAdminon keresztül, otthonról (localhostról) kimentett .sql fájlt töltesz fel (és otthon localhoston nem adtad meg a karakterkiosztás fajtáját, mert még régi a MySQL-ed otthon, és nincs ilyen opció), akkor a feltöltés elõtt fontos, hogy a szerveren lévõ phpMyAdminban beállítsd a fájl karakterkészletét latin2-re. Ha ezt nem teszed meg, az ékezetes karakterek helyett kérdõjel és más jelek jelennek meg. mysql_query("SET NAMES latin2"); Link to comment Share on other sites More sharing options...
payskin 905 Share Posted June 18, 2006 Nos, egyrészt nem ezt írtam be a Google-ba. Másrészt nem ez vol a hibajelenség. A PHPMyAdminban mindig jók voltak az ékezetek, akármit állítottam be (utf-8, latin2). Kizárólag a saját lekérdezésem nem stimmelt. Egyébként a mai napig nem értem, miért van szükség erre a SET NAMES-re, és miért nem elég, hogy én azt mondom a MySQL-nek, hogy latin2 az alapértelmezett kódolás. Az a bajom továbbra is, hogy nem tudom, ki a hülye. A MySQL, mint szerver, adja vissza rosszul vagy a PHP kliense kérdezi le rosszul? Na mindegy, a lényeg, hogy megoldódott. Link to comment Share on other sites More sharing options...
Greene 8 Share Posted July 20, 2006 Azért elég lol, hogy végigkerestél ezer fórumot és a dev.mysql.com-on ott van tisztán érthetõen a megoldás. Csak persze nem ültette át senki magyarba. Én balga meg nem olvastam a topicot, mondván, és úgysem használok ékezetet. Link to comment Share on other sites More sharing options...
payskin 905 Share Posted July 21, 2006 Ott van? Elég sokat nézegettem a MySQL doksiját, kevés eredménnyel. Link to comment Share on other sites More sharing options...
Sanzi 0 Author Share Posted August 29, 2006 Nah, jó mérgelõdjünk, mérgelõdjünk. @h.arpad ...a szerveren lévõ phpMyAdminban beállítsd a fájl karakterkészletét latin2-re. ... Hol? mysql_query("SET NAMES latin2"); Parancs kiadása után az alábbi hibaüzenetet kapom: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql_query("SET NAMES latin2")' at line 1 @Greene Tudom, Te nem használsz ékezetet, és azt is tudom, hogy az általad linkelt oldalon minden világosan le van írva. Én balga viszont nem találom, és az angolom se olyan jó. Kérlek, légy oly kedves és segíts, vagy legalább fordítsd le a "tisztán, és érthetõen" részt. Nagyon kíváncsi lennék rá. Köszönöm! Link to comment Share on other sites More sharing options...
payskin 905 Share Posted August 29, 2006 Nem az a gond, ezt a MySQL-lel próbálod megetetni, miközben ez egy PHP utasítás? A MySQL-re csak a SET NAMES latin2 tartozik. Link to comment Share on other sites More sharing options...
Greene 8 Share Posted August 29, 2006 Nem, a MySQL nem így jelzi a hibát. PHP-ban ezt az utasítást a mysql-hez csatlakozás után kell kiadni. Link to comment Share on other sites More sharing options...
payskin 905 Share Posted August 30, 2006 phpMyAdmin! Link to comment Share on other sites More sharing options...
b1rd 0 Share Posted March 26, 2007 hmmm... érdekes jelenségek! Link to comment Share on other sites More sharing options...
saya-jin 0 Share Posted May 20, 2007 (edited) Hi allz! Bár már régen működik ez a fórum, ahogy elnézem, de gondoltam, hátha tudok valamit én is hozzátenni a témához. Én végignéztem a netet szintén a témában, és én is téptem a hajamat, sőt még van amiért most is hullanak rendesen a hajszálaim. Amit találtam használható dolgot, az a következő: 1. A legbiztosabb, ha minden kritikus stringet CHARACTER SET utf8 típusnak definiálsz. Ezt elméletileg be lehet állítani defaultra valahol, de nekem nem sikerült végleg megoldanom, hogy ne kelljen ezt odabiggyeszteni. 2. Amikor php-ban létrehozott a kapcsolatot, akkor ilyet kellene még utána küldeni: $db = new mysqli($g_DBConnection_ServerName, $g_DBConnection_UserName, $g_DBConnection_Password, $g_DBConnection_DB); if (mysqli_connect_errno()) call_error(-1); $db->query("SET NAMES UTF8"); $db->query("SET CHARACTER_SET UTF8"); 3. Most jön a java! A "php.ini" fileban megkeresed a "[mbstring]" taget és ilyesmi formába kell önteni: ; language for internal character representation. mbstring.language = Neutral ; internal/script encoding. ; Some encoding cannot work as internal encoding. ; (e.g. SJIS, BIG5, ISO-2022-*) mbstring.internal_encoding = UTF-8 ; http input encoding. mbstring.http_input = auto ; http output encoding. mb_output_handler must be ; registered as output buffer to function mbstring.http_output = UTF-8 ; enable automatic encoding translation accoding to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On. ; Note: Do _not_ use automatic encoding translation for ; portable libs/applications. mbstring.encoding_translation = On ; automatic encoding detection order. ; auto means mbstring.detect_order = auto ; substitute_character used when character cannot be converted ; one from another mbstring.substitute_character = none; ; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them. ; For example, 7 for overload everything. ; 0: No overload ; 1: Overload mail() function ; 2: Overload str*() functions ; 4: Overload ereg*() functions mbstring.func_overload = 7 Érdekes módon az Operával már így jó lett nálam, de IE alatt még mindig trágya maradt, amit a következő oldott meg: Meg kell keresni a "default_charset" változott a php.ini-ben és UTF-8ra állítani szintúgy. Ez megoldja a dolgot IE alatt is. Persze a html fejlécből ekkor már nem hiányozhat a <meta http-equiv='Content-Type' content='text/html; charset=utf8'> meta tag sem. 4. Ha véletlenül procedurálisan használjátok az SQL-t, akkor megint jön a fekete leves. A stringek átadásánál is ugyanúgy meg kell adni a karakterkódolást, mert különben megint valami default értéket tesz be, amit aztán ha sikerült átálítani, akkor gratula. 5. Noss: amiért a hajamat kitépem viszont. Amióta átálítottam ilyen módon a php interpretert, azóta viszont a phpMyAdmin kezdett el vicess dolgokat művelni. Ha ott adok meg egy stringet egyik procedúrám paramétereként, akkor két 'é' betűs szavaknál syntax errort kapok a mysql-től, mert az neki jó. Jelezni fogom, ha rájöttem, hogyan lehet ezt kiiktatni. valószínűleg, mivel ez is php alapú, becsúszott valami quote karakter a kódolásnál és beleszemelni látszék az SQL scriptbe. Sok sikert a további kísérletezésekhez! Edited May 21, 2007 by h.arpad Link to comment Share on other sites More sharing options...
h.arpad 0 Share Posted May 21, 2007 Azért érdekes, amit írsz, mert a PHP kód egy olyan objektumpéldányt készít, amirõl nincs elõzmény, tehát valószínû, sohasem fogjuk így megtudni, mit is akar... Lehetséges, hogy PEAR-t használsz? De akkor azt illik feltüntetni... A másik pedig: Az ékezetes betûkkel valószínû mindig gond lesz. Nem mindenki fér hozzá a szerver beállításaihoz, ha az nem a saját gépén van, úgyhogy azt nem tartom jó megoldásnak. A legegyszerûbb az ékezetes karaktereket kiváltani a HTML-kódjukra. Pl. é = é . A másik pedig, hogy én aztán állíthattam, amit akartam, a õ és û mindig csak "?" maradt, tehát ezeket mindenképpen ki kellett váltanom. Link to comment Share on other sites More sharing options...
payskin 905 Share Posted May 22, 2007 Én is sokat szívtam ezzel, de azért amióta tudom, hogy SET NAMES, azóta nincs vele gondom. Az a lényeg, hogy be kell állítani a MySQL szervert valamire (latin2 vagy utf8), és utána ugyanarra a HTML fejlécet meg a SET NAMES-t, és kész. Link to comment Share on other sites More sharing options...
Greene 8 Share Posted May 22, 2007 Én szoktam még a "collate" parancsot is használni fõleg különbözõ SQL implementációk között. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now