» »

MySQL in czs

MySQL in czs

MrBrdo ::

Lep pozdrav.

Na FreeBSDju mi teče MySQL 4.1.9. Za pregledovanje baze uporabljam PHPMyAdmin, imam pa sledeč problem: Strani, ki vpisujejo podatke v bazo imajo ISO-8859-2 charset (oz latin2). Nikakor mi ne uspe, da bi lahko te podatke bral prek PHPMyAdmina v berljivi obliki. Pri večini charsetov ki jih poizkusim (vključno z latin2), se mi čžš, vnešeni prek teh strani, prikazujejo v PMA kot ?, ko pa jih prek strani spet preberem, so pravilni (torej res čžš). Če pa naprimer v PMA dam change in vpišem č ali ž ali š prek PMA, se mi v PMA izpsuje pravilno (samo pri določenih charsetih, mislim da pri latin2 in utf8), vendar se na strani izpisujejo kot ? ali pa tisti cudni znakci.
Imam dostop do enega slovenskega strežnika ki ima tudi MySQL bazo, in sem skopiral gor točno isti PHPMyAdmin, ki ga jaz uporabljam, in tam zadeva dela brez problema (torej vedno vidim čžš pravilno, in v PMA in na strani). Edina razlika je, da mi tam PMA sploh nikjer ne prikazuje charsetov (torej ni možno posebej za tabelco\bazo\karkoli naštimat charsetov, niti ne moram pogledat kateri je - vendar imam tu dostop le do določene baze, tako da ne vem če je s tem kaj povezano).
Glede na vse zgoraj napisano se mi dozdeva, da bi moral nekako skonfigurirati ali OS (FreeBSD), ali mysqld, da bi se mi ti znaki pravilno izpisovali (torej pravim da očitno ni problem v PMA). Btw, najprej sem compilal mysqld normalno (torej latin1 in latin1_swedish_ci), poskusil pa sem tudi z WITH_CHARSET=latin2 WITH_COLLATION=latin2_general_ci, vendar tudi tako ne dela. Prav tako sem v PMA nastavil te nastavitve za trenutno sejo. Z UTF8 prav tako ne gre. Zdi se mi tudi čudno, da na onem serverju vidim čžš ne glede na to, kateri charset uporablja stran (oz. poskusil sem le z windows-1250 in ISO-8859-2, vendar oba delujeta). Pa prosim da ne bo kdo rekel da nima veze kateri charset uporablja stran, seveda je važno saj preko forme (POST) pošljem podatke na PHP stran, ki jih nato brez spreminjanja zapiše v bazo (se pravi brez da bi kaj popravljal čžš), torej so podatki enkodirani v tem charsetu. Ena zelo neprijetna stvar je recimo, da neke podatke shranim v bazo prek strani, potem pa bi rad v PMA nekaj popravil, in nato se mi vsi čžš dejansko spremenijo v "?", tako na strani kot v PMA.

Upam da kdo pozna ta problem in da mi lahko pomaga, this is driving me nuts :)
Hvala,
LP
MrBrdo
  • spremenilo: MrBrdo ()

MrBrdo ::

A res noben ne ve kaj bi blo?
MrBrdo

AndrejS ::

Imel isti problem. Rešitev : MS SQL Server. ( + ustrezen sistem seveda)

MrBrdo ::

Ja seveda iz FreeBSDja bom sel na Windowse :)
MrBrdo

nejc_ ::

glej... ni direkten odgovor na tvoje vprasanje, pa vseeno.. jst sem izgubil se in se zivcev zarad sumnikov v taksnih in drugacnih primerih pri mysqlu.. ce imas moznost, pojdi na postgre in utf8, kjer ti iz prve roke povem, da zadeva spila tako kot mora...

MrBrdo ::

Ja ti verjamem, problem je v tem da delam strani za eno firmo in imajo MySQL streznik.. Pa se mi ne da potem pretvarjat, ce se sploh da (tko da nebi šli šumniki pa-pa).
MrBrdo

nejc_ ::

potem pa uporabljaj vsaj utf8 za collation pa tud imas, ce se prav spomnim utf8_slovenian

seveda pretvori vse podatke iz latin2 v utf8 :)

St@jler ::

jaz sem nekako prišel do tega da ali imaš na strani lepo šumnike uredu, ali pa v PMA. oboje mi ni nikoli ratal. Tako da imam rajši na strani.

Sicer pa za šumnike na strani uporabljam sledeče pretvorbe:

š = &#353 ali š = &#154
Š = &#352 ali Š = &#138
ž = &#382 ali ž = &#158
Ž = &#381 ali Ž = &#142
č = &#269
Č = &#268

In potem če uporabnik recimo napiše v textfield: "kmalu bo noč", je v bazi napisano "kmalu bo no&#269"

snow ::

Hm. Meni lepo delajo šumniki tako na strani kot tudi v phpmyadminu in lahko popravljam tako preko strani (php & post) kot preko phpmyadmina. Hmm.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

ThinMan ::

Mogoče pa je kaj z FreeBSD oz nastavitvami MySQL za FreeBSD.

Sam sem mel težave z sambo na FreeBSD ker sem moral explicitno dodati charset tko da smo potem lahko imena datotek pisali z šumniki.

MySQL imam na Debian servrju in delajo šumniki. Mogoče res probaš z konverzijo vnesenih šumnikov z kodami &#xxx (xxx številka znaka)


lp,
----
"We may not be able to control the wind, but we can always adjust our sails"

MrBrdo ::

snow: kateri OS pa uporabljaš? pa kateri charset in collation in kateri charset na strani?

Drugače sem tudi jaz že razmišljal da bi na pageu popravljal šumnike, sam se mi brezveze če je možnost da dela tudi brez tega.. Pomoje je res nekaj v zvezi z nastavitvami ali FreeBSD ali MySQLa (mogoce ma port drugacne nastavitve kot na drugih OS, ceprav pomoje je bolj verjetno da bi moral kej na FreeBSD nastavit).
MrBrdo

MrBrdo ::

Mislm to pa res čudno da tega noben ne ve..
MrBrdo

sverde21 ::

Uskladi charseta v bazi in na strani, probaj z novo verzijo MySQL v5.0.16 se mi zdi d je zadna :)
<?php echo `w`; ?>

MrBrdo ::

Ne petka še ni čist stable kokr vem.. Mam 4.1 najnovejšo..

V glavnem nikakor ne gre, zdej sm recompileu mysql client in server in nastavu default utf8, stran ma tut encoding utf8 (html), in ko na strani prek forma nekaj vnesem, se povežem na bazo in še posebej nastavim charset:
mysql_query("SET CHARACTER SET 'utf-8'");
in potem pač query insert recimo, in potem ko to preberem iz baze in izpišem na strani je ok čžš, v phpmyadminu, ki ima pa tudi vse nastavljeno na utf8, pa mi pokaže en vprašaj (za vse tri - čžš). Če naredim nasprotno, torej v bazi nastavim čžš, mi na strani ne pokaže vprašaja ampak Ä�Şť.. Zdej pa res ne vem kva je narobe.. Stran ma 100% encoding utf8, in tudi characters set se bi moral nastavit.. ne vem kaj naj še naredim..

ok zdele sm še neki probu:
namesto mysql_query("SET CHARACTER SET 'utf-8'"); sem dal mysql_query("SET CHARACTER SET 'latin2'");, VSE ostalo pa je nastavljeno na utf8. Zdaj se čžš pokažeta v phpmyadminu in na strani??? WTF?? A mi lahko kdo razloži v čem je zdej fora?

lp
MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()

krho ::

@AndrejS: ti si šel na M$$QL jaz ga pa sovražim iz dna duše. Kako temu pof*kanemu serverju poveš, da naj datume vrača PO SQL standardu ne pa po Window$ locale settingu ali kakorkoli se mu pač že dvigne.:\

@MrBrdo: MySQL 5 je stable. Ene 14 dni najmanj.

Tiste kvake so utf-8, nagradno vprašanje pa je kakšen encoding za html ti pošlje apache. Svoj framework poizkuđaj prepričati, da bo sam pošiljal vse headerje tudi za html.
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

MrBrdo ::

ja sem poizkusil zdaj nastavit content-encoding prek header() na utf-8, ampak nič ne spremeni.. v phpmyadminu vidm samo en ? namest čžš, ki se vid na strani..
pravilno dela samo v primeru da povsod nastavim utf-8, razen ko se povežem na mysql iz moje strani moram dat
mysql_query("SET CHARACTER SET 'latin2'");
in v tem primeru dela ok.. sam je nelogično da bi blo povsod utf-8 pol pa kr neki latin2..
MrBrdo

krho ::

Mislim, da ima tvoja baza (baza ne server), še vedno nastavljen encoding na latin2.
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

MrBrdo ::

misliš polje v tabelci da ima encoding na latin2 nastavljen? ker to nima.. ima collation nastavljen na utf8_general_ci..
MrBrdo

krho ::

Polje v tabeli ali pa sama tabela sem mislil ja.
Ker to bi bila edina možnost, zakaj rabiš nastavljat latin2.
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

MrBrdo ::

očitno mora bit še kaka druga možnost, ker mam nastavljen na utf8_general_ci collation pri tabelci in poljih v njen..
MrBrdo

krho ::

ravno sedajle sem pizdil nad mySQL-om, ker sem imel bazo definirano kot utf-8, kretenski mysql pa mi je vstajno vračal cp1250. No 5.x serija zahteva negelde na nastavitve baze, nastavitev connection encodinga
izvedi naslednji stavek peardbConn->query('SET NAMES \'utf8\'');
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

MrBrdo ::

Kaj pa je razlika med
mysql_query("SET CHARACTER SET 'utf8'");
in
mysql_query("SET NAMES 'utf8'");
?
MrBrdo

ferjan ::

brdo ...a si že našel rešitev ...me zanima ker imam isti problem

MrBrdo ::

V bistvu ne.. trenutno imam rešeno tako (pa ne vem zakaj ravno tako deluje), da imam na bazi nastavljeno vse na ut8, potem pa v PHP skriptah ki jih mam naredim mysql_query("SET CHARACTER SET 'latin2'"); v phpmyadminu pa nic ne spreminjam.. in deluje povsod, samo ne vem zakaj ravno tako =/ nekdo mi je priporočal naj nastavim iconv v phpmyadminu samo men se to ne zdi rešitev ker npr. na linuxu deluje vse tudi brez tega..

tako da še vedno če kdo slučajno ve kako bi se to rešilo pravilno naj sporoči

lp
MrBrdo

CWIZO ::

Zakaj za boga imas vse na utf8 pol das pa SET NAMES latin2 ?!?
Povsod mej vse isto nastelan. Od fajlov do baze do HTML charset taga.
Pol bo pa delal tko kot je treba.
hancic.info
I can't uninstall it, there seems to be some kind of "Uninstall Shield"...

MrBrdo ::

Cwizo dej prosim drugic si PREBER na kaj odgovarjas, ker sem jasno napisal da mi če vse nastavim na utf-8 NE DELA (ja, ne bos verjel, od fajlov do baze in HTML taga). Lej ce ne znas al pa ce se ti ne da brat rajs ne odgovarjaj, pa prihrani nam vsem cas ker moramo brat tvoje bedastoce. Ce mislis da si pameten ker si izpostavu najbolj logicno kombinacijo k mislim da smo jo VSI najprej probali, pol se motis.
Taki ljudje pa res morjo obstajat, da mene jezijo, al kaj.. Pa ravno v mojem postu se mora en pojavit... ;(

lp
MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()

CWIZO ::

O ti bogi bogi.

Zgleda nisi povsod nastavil (shema, tabele, stolpci, SET NAMES utf8, file utf8 without BOM, meta charset=utf8)
Ce bi, bi delalo;)
hancic.info
I can't uninstall it, there seems to be some kind of "Uninstall Shield"...

MrBrdo ::

Verjam mi da sem.. Drugac nebi rekel. In ce nisi mel tega problema na FreeBSDju te prosim da prepustis to nekomu ki ma idejo kako bi to resil.. Na drugih OS tudi jaz nisem imel problemov s tem.
MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()

CWIZO ::

Pojdi se cez config fajle PHPja ter apacheja, ce je tam kaka cudna nastavitev.
hancic.info
I can't uninstall it, there seems to be some kind of "Uninstall Shield"...

MrBrdo ::

Ja bom se enkrat pogledal sam glede na to da mam ta problem ze eno leto mi lahk verjames da sem se na vse te banalnosti ze spomnil. Ce mas kaksno bolj konkretno idejo kaj bi preveru pa super..

lp
MrBrdo

Poldi112 ::

Imaš mogoče kak compile flag za utf8, ki si ga izpustil?
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

MrBrdo ::

Jah mislim da ne, dal sem oba, WITH_CHARSET in WITH_COLLATION (al neki takega).. mislim da kak drug ne obstaja, lahko pa da se motim.. Tabelce pa stolpci pa majo tudi vsi na utf-8..
MrBrdo

wind ::

Na debian + mysql 4.1 + phpMyAdmin 2.7.0-pl2-Debian-1 deluje tole:

- v datoteki /etc/init.d/mysql vrstico 80 spremeni v:
/usr/bin/mysqld_safe --default-character-set=latin2 --default-collation=latin2_general_ci > /dev/null 2>&1 &

- v datoteki /etc/mysql/my.cnf pod [mysqld] dodaj init-connect = "SET NAMES latin2" in pod
[mysql]
default-character-set=latin2

Ko kreiraš bazo ali tabelo dodaš DEFAULT CHARSET=latin2.

Dobro je tudi vedeti, da se init-connect izvede samo pri ne-root povezavah. Zaradi tega potem ni potrebno
spreminjati php skript.
w

MrBrdo ::

wind hvala, to si fajn napisu in mi bo sigurno se kdaj prov prsilo.. sicer to ni uspelo resit mojga problema vendar sem nasel problem ki je bil pri meni..

za vse, ki imate mogoce ta problem, pri meni je bilo naslednje:
v Apache configu (httpd.conf) sem imel vrstico "AddDefaultCharset ISO-8859-2" (lahko mate tut kaj drugega tam namesto ISO-8859-2).. Odkar sem to vrstico zakomentiral mi vse deluje brez problemov (prej mi je očitno kar ignoriral kateri charset je bil nastavljen v html).

lp
MrBrdo

ElNuncio ::

Kako pa naj v FreeBSDju nastavim default char set na UTF-8?

Na strani od mysql:
You can add the --default-character-set option setting to your mysql statement line, or in your option file. For example, the following option file setting changes the three character set variables set to koi8r each time you invoke mysql:

[mysql]
default-character-set=koi8r


Jaz sem sicer našel pod "/usr/local/etc/rc.d/" skripto "mysql-server.sh', ki najbi se zagnala ob zagonu računalnika (startup), kjer lahko tudi dodaš kakšen dodaten argument, za ob startupu mysqlla.
No spremenil sem ${mysql_args=""} v ${mysql_args="--character-set-server=utf8"}.
Vendar ta stvar ne deluje.

Jaz v mojem httpd.conf nisem našel 'AddDefaultCharset ISO-8859-2' mogoče je odvisno tudi od verzije apacha...jaz imam apache-2.0.55_3. No dodal sem pa v moj httpd.conf ''AddDefaultCharset UTF-8', pa vseeno ne deluje :(

Ali kdo ve, kako da nastavim 'default-collation' in 'default-charset' na mysql serverjuoz. na apachu?

Zgodovina sprememb…

  • spremenil: ElNuncio ()

jype ::

Ahja :)

V /etc/my.cnf (oz. /usr/local/etc/my.cnf na fbsd i guess) napisete:

[mysqld]
character-set-server=utf8

[client]
default-character-set=utf8

In potem v phpMyAdmin normalno delajo sumniki, ce v bazo pisete UTF-8.

Pretvorbo se najlazje naredi tako, da pred spremembo naredis
mysqldump -u root -p -a > mysql.dump
iconv -f <charset ki ste ga imeli prej, recimo iso-8859-2> -t utf-8 mysql.dump > mysql-utf8.dump

Po restartu baze pa
mysql -u root -p < mysql-utf8.dump

NeOman ::

no sam imam podoben problem z mysql bazo (charset: windows-1250). v bazi so sumniki vpisani normalno, vendar ko jih skripta prebere mi v firefoxu postavi samo vprasaje.
no da bi se temu izognil poskusim pretvoriti zadeve po naslednjem postopku:

	$post_text = str_replace("Š", "&#352;", $post_text);				
	$post_text = str_replace("š", "&#353;", $post_text);				
	$post_text = str_replace("Ž", "&#381;", $post_text);				
	$post_text = str_replace("ž", "&#382;", $post_text);
	$post_text = str_replace("Č", "&#268;", $post_text);
	$post_text = str_replace("č", "&#269;", $post_text);


š,Š,ž in Ž delujejo brez kakrsnihkoli problemov, pri č pa metoda ne deluje. se morda komu sanja zakaj? deluje tako, kot da nikoli ne zazna črke č.;(

hvala za odgovore.

ElNuncio ::

Jaz imam prav identično napako kot je navaja MrBrdo (v phpMyAdminu ni šumnikov, na strani pa so), samo da njegova rešitev mi ne pomaga.

Poskušal sem dodati

[mysqld]
character-set-server=utf8

[client]
default-character-set=utf8

kot predlaga jype v my.cnf. Vendar pri fbsdju tega file sploh ni, vendar ga lahko ustvariš saj se pod /user/local/share/mysql/ skrvajo primeri tega conf. file. V /usr/local/etc/rc.d/"mysql-server.sh' je tudi zapisano kje more da file bit da ja skrpta upošteva.
No dodal sem zgornje vrstice v pod '/var/db/mysql/my.cfn', ta file moreš seveda ustvarit ker po defaultut ga sploh ni, vendar stvar in pomagala. Poskušal sem tudi rešitev od wind-a, vendar prilagojena za fbsd, v '/usr/local/etc/rc.d/mysql-server.sh' sem dodal '--default-character-set=utf8 --default-character-set=utf8 --default-collation=utf8_slovenian_ci', pa tudi ne pomaga.

Drugače imam pod '/usr/local/share/mysql/charsets' le:
cp1250.xml cp850.xml geostd8.xml keybcs2.xml latin2.xml macroman.xml
cp1251.xml cp852.xml greek.xml koi8r.xml latin5.xml swe7.xml
armscii8.xml cp1256.xml cp866.xml hebrew.xml koi8u.xml latin7.xml
ascii.xml cp1257.xml dec8.xml hp8.xml latin1.xml macce.xml

Nimam kakega utf8.xml ali kaj podobnega...mogoče pa je v tem problem, mogoče bi rabu nekako dodat nove character setse ali pa compilat mysql na novo z character sets utf-8??? :(

Kaj ta slovenščina mora met te šumnike, predlagam referendum da se jih ukine! :\

snajko ::

Ja res žalostno da se moramo ukvarjati s temi trapastimi šumniki. Jaz sem v bistvu še čisto na začetku kar se tiče PHPja in MySqla, no postavil sem si zadevo v XPjih z Apachejem 1.3.34, MySQL - 4.1.14-nt, phpMyAdmin - 2.8.0.3 in PHP 5.1.2.
Ko v PMAdminu uvozim tabelo ki zgleda takole:

CREATE TABLE izdelki
(
id SMALLINT PRIMARY KEY,
vrsta_izdelka VARCHAR(50),
naziv CHAR(16),
cena DECIMAL(8,2),
datum_vnosa CHAR(24)
)
;
INSERT INTO izdelki
(
id,
vrsta_izdelka,
naziv,
cena,
datum_vnosa
)
VALUES
(
1,
'avtomobil',
'diana',
80000.00,
'prvi štirje zapisi'
),
(
2,
'lokomotiva',
'dizel',
120000.00,
'so bili uvoženi'
),
(
3,
'šumniki in',
'žđćčš',
1800.00,
'v bazo preko'
),
(
4,
'SIČNIKI',
'ŽĐĆČŠ',
2204.00,
'tekst datoteke'
)

Mi seveda šumnikov ne uvozi pravilno ne glede na to katero pisavo nastavim pri uvozu
Ko recimo to popravim v vmesniku na spletni strani dela OK in tudi ko dodajam nove izdelke se šumniki kažejo pravilno-uporabljam pa v vseh php fajlih charset=windows-1250. Ker bom verjetno veliko rabil uvažanje tabel s PMAdminom me zanima, če se da to kako urediti

snajko ::

To je res za znort...probal 100 in eno varianto in nič enkrat dela to drugič to in obratno-nikoli pa da bi blo vse OK...največ kar mi je uspelo je to, da mi pri uvozu s PMAdminom vse prikaže pravilno, potem na spletu je totaln podn, ko pa ponovno prek spletnega obrazca popravim ali naredim nov vpis je pa vse OK. Čudi me to, da se ni najdu en pameten, ki bi ta problem rešu za zmeraj, ne pa da moraš prebrat in probat milijon variant pa nič ne rata. Polega tega sem pa še popoln začetnik in zatakne se mi tam kjer najmanj pričakujem...danes sem zabil še 6 ur in nič ;(

krho ::

@snajko: za uvoz iz txt preko ukazne vrstice, mu podaš parameter, kateri pove v katerem encodingu je vhodna datoteka, napiši --help
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

snajko ::

Krho sem bolj bukove sorte, si lahko malo bolj konkreten

krho ::

dodaj parameter --default-character-set=file encoding

file encoding bo v tvojem primeru cp1250
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Šumniki in MySql

Oddelek: Izdelava spletišč
196657 (6194) SPEEEED
»

utf-8 in dolzina polja v mysql

Oddelek: Izdelava spletišč
103661 (3411) tmz
»

[PHP] charter set windows-1250

Oddelek: Programiranje
282806 (2806) Blisk
»

MySQL in šumniki

Oddelek: Programiranje
103039 (2810) darkolord
»

[mySql] šumniki - večni problem

Oddelek: Izdelava spletišč
84228 (4087) jvolk

Več podobnih tem