ugrás a tartalomhoz

MYSQL 4.1 magyar ékezet gondok utf8-as kódolású táblánál

troy1979 · 2006. Jún. 21. (Sze), 10.35
Sziasztok,

Egy többnyelvű oldalt készítek, és a régi adatbázis szerver (mysql 4.0) alatt tökéletesen működött az utf8-as kódolás/megjelenítés, még ha nem is volt ilyen karakterkészlet

Most hogy a 4.1 mysql szerverre váltottunk, és van utf8-as kódolás

Az Á (nagy á) helyett folyton a ÿ karakter jelenik meg, illetve a phpmyadminban ha módosítani akarom, akkor ? (kérdőjel) jelenik meg a betű helyett

Mit javasoltok?/Mit kellene beállítanom, hogy jól működjenek a dolgok?

(A html utf8-as kódolását szeretném megtartani ha lehet)
 
1

Ezek a mysql szerver character set collation beállításai

troy1979 · 2006. Jún. 21. (Sze), 10.43
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_results utf8
character_set_server latin1
character_set_system utf8

collation_connection utf8_general_ci
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci

És a mezőnek, amit le szeretnék kérdezni a collation-ja:

utf8_general_ci
2

Nem

Bártházi András · 2006. Jún. 21. (Sze), 12.00
Nem, ezek nem a MySQL szerver beállításai (egy-kettő elemtől eltekintve). Ezek az adott kliens beállításai! Attól függően, hogy parancssorból, php-ból, phpmyadminból kérdezed le ezeket, más és más értéket vehetnek fel.

Alapvetően az adatbázishoz csatlakozás után egy "SET NAMES UTF-8" kiadása meg fogja oldani a problémát, de a régi adatok migrálása valószínűleg szükséges lesz. Ezt olvassad el: http://weblabor.hu/cikkek/mysql50karakterkodolasok
37

Ez komoly, akkor svéd abc

inf3rno · Jún. 27. (Cs), 17.14
Ez komoly, akkor svéd abc szerint kell, hogy rendezze a találatokat, nem magyar szerint? :D
3

SQL 4.1.20 kódolás probléma

mephi02 · 2007. Júl. 30. (H), 23.06
Sziasztok!
Nekem is van egy hasonló kódolási problémám, gondoltam nem nyitok új témát, ide belefér.

Létrehozok egy táblát pár mezővel, az sql parancs végén
DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
jelzővel, így elvileg minden mező utf8, mert külön-külön nem változtatom (szerk.: és valóban az is, ellenőriztem)

Ha feltöltöm a varchar és a text tipusú mezőket az "árvíztűrő tükörfúrógép" szöveggel, a phpmyadminban nézve nincs is torzulás, minden rendben van. Php-vel a böngészőbe lekérdezve a tábla tartalmát, minden mezőben "árvízt?r? tükörfúrógép" szöveg látható.

Az oldal fejlécében elhelyeztem a következőt:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


Hol lehet a hiba, illetve mit kellene beállítanom, hogy helyesen működjön? Ha további információra van szüksége a probléma felderítéséhez, kérlek jelezzétek, hogy mi lenne az!

Köszönöm!
4

write only? :)

zila · 2007. Júl. 30. (H), 23.21
Alapvetően az adatbázishoz csatlakozás után egy "SET NAMES UTF-8" kiadása meg fogja oldani a problémát, de a régi adatok migrálása valószínűleg szükséges lesz. Ezt olvassad el: http://weblabor.hu/cikkek/mysql50karakterkodolasok


A fenti idézet András hozzászólásából van, ami pont a tiéd felett olvasható :)
5

re: write only?

mephi02 · 2007. Júl. 31. (K), 08.28
Természetesen elolvastam, de nem egészen értem, hogy hol kellene nekem ezt kiadni.
Elég egyszer, az SQL konzoljába, vagy építsem be a dinamikus weboldalamba, hogy minden query előtt ezt küldje el a szervernek?

szerk.:Az előbbit kipróbáltam, az eredmény sajnos ugyanaz. Létrehoztam egy új táblát, azzal sem jó.
6

kapcsolódás után

zila · 2007. Júl. 31. (K), 08.54
A scriptjeidben az adatbázis kapcsolódás után kell kiadni.
pl. php-ben:

mysql_connect();
mysql_select_db("dbname");
mysql_query("set names 'utf8'");
7

SET NAMES

mephi02 · 2007. Júl. 31. (K), 09.07
Új fejlemény van, az eredeti tesztszöveg helyén így az "ĂĄrvĂ­ztĹąrĹ� tĂźkĂśrfĂşrĂłgĂŠ" szöveg jelenik meg a böngészőben. :(
Annyit csináltam, hogy a kódba a kapcsolódás utánra (ahogy írtad) beillesztettem a kódod 3. sorát.
8

oldal kódolása

zila · 2007. Júl. 31. (K), 09.17
ugye a script kódolása is utf-8, valamint az oldal kiszolgálása is utf-8 - header("Content-type: text/html; charset=utf-8");

Valahol meg lehet nézni az oldalt?
9

kódolás

mephi02 · 2007. Júl. 31. (K), 09.27
A script kódolását nem tudom, hol lehet megváltoztatni, én nem tettem.
Fentebb már írtam, a headerben benne van a következő:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Az oldal eléréséről küldök privátot!
10

ez kevés

zila · 2007. Júl. 31. (K), 09.31
Ez önmagában kevés. Ha a scripted nem utf-8 kódolású és nem adsz ki ut-8 header-t sem, akkor a meta nagyjából semmit nem ér...

A scripted attól lesz utf-8, hogy ilyen kódolással mented el.
13

script utf8 kódolás és header

mephi02 · 2007. Júl. 31. (K), 09.48
Sajnos nem tudom, hogy hogyan kellene utf-kódolásúvá alakítani a scriptet, illetve kiadni azt a bizonyos utf-8 headert.
Az általad fentebb hivatkozott cikkben a "Karakter kódolás jelölése" fejezetben írtakat kellene alkalmaznom a SELECT-nél? Gyanítom, hogy nem, de nem igazán látom, hogy mit kellene csinálni. Tudnál valami útmutatót linkelni, vagy pár szóban leírni?
11

ez kevés

zila · 2007. Júl. 31. (K), 09.31
Ez önmagában kevés. Ha a scripted nem utf-8 kódolású és nem adsz ki ut-8 header-t sem, akkor a meta nagyjából semmit nem ér...

A scripted attól lesz utf-8, hogy ilyen kódolással mented el.
12

megnéztem

zila · 2007. Júl. 31. (K), 09.40
Nem utf-8 kódolással küldöd ki az oldalt. Ha a böngészőben átállítom a kódolást utf-8-ra, akkor minden rendben van, az ékezetek jók. Konvertáld a filejaidat utf-8-ra és küldd ki rendesen a charset headert.
14

oldal kódolás küldése

mephi02 · 2007. Júl. 31. (K), 10.00
Valóban, ha manuálisan átállítom a böngészőben a kódolást, minden szép és jó.

A fájlok konvertálása alatt arra gondolsz, hogy a .php fájlomat mentsem el UTF-8 kódolással? Ez megtörtént, de a helyzet változatlan.
Ha nem erre gondoltál, akkor hol és mit kellene megváltoztatnom?

Sajnos az sem világos, mit kellene tennem, hogy "rendesen" ki legyen küldve a charset header. Mit kellene még tennem azon kívül, hogy az oldal fejlécében elhelyeztem az idézett sort?
15

olvass is azért

zila · 2007. Júl. 31. (K), 10.48
A 8-as hozzászólásomban már leírtam:
header("Content-type: text/html; charset=utf-8");
Ezt kell kiküldened minden más kimenet előtt a scriptjeidben.
16

header küldés

mephi02 · 2007. Júl. 31. (K), 12.59
Kiderült, hogy én azt hittem, hogy az első <?php blokk elején kell kiadni a header utasítást, pedig (mint ahogy zila felvilágosított) az egész fájl legelején kell nyitni egy php blokkot, és ott kiküldeni a headert, ami logikusabban is hangzik...
Ezt megtettem, a .php fájlomat a következőképpen kezdem:
<?php
header("Content-type: text/html; charset=utf-8");
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	
	<META http-equiv="Content-Type" 
content="text/html; charset=utf-8">
.....
Az adatbázishoz való csatlakozás után pedig kiadok egy
mysql_query("SET NAMES 'utf8'"); 
parancsot.


Elvileg tehát már jó a kód, de még mindig azt tapasztalom, hogy a böngésző az alapértelmezett kódolással nyitja meg az oldalt, nem utf-8-cal.
17

Keretek

Ronyn · 2007. Júl. 31. (K), 13.19
Nem tudom hol van az oldalad,de ha ingyenes tárhelyen van,és a szolgáltato egy keretbe helyezi az oldalt(relámok miatt) akkor,(tapasztalatom szerint)sajna a szolgáltato által(a kereteket tartalmazo oldalban) megadott kodolás fog dominálni,az összes keretben,igy a bongészők sem igazán veszik figyelembe a helyileg megadott kodolást....
19

saját domain

mephi02 · 2007. Júl. 31. (K), 13.37
Egy külön domain név alatt fut a dolog, úgyhogy csak az fut le, amit én szeretnék.
21

.htacces

Ronyn · 2007. Júl. 31. (K), 14.05
Esetleg a .htaccessben lehetne egy default kodolást beállitani,hátha segit....
Vagy megnézni hogy ott nem-e szerepel valami más utasitás a kodolásra...
22

.htaccess

mephi02 · 2007. Júl. 31. (K), 15.36
Nem szerepelt benne semmi, kitöltöttem uft-specifikus adatokkal.
18

nálam már jó...

zila · 2007. Júl. 31. (K), 13.35
Én safariban nézem az oldalad és nem kell állítanom semmit, jól jönnek be az ékezetek egyből...
20

böngészőspecifikus??

mephi02 · 2007. Júl. 31. (K), 13.39
Safarival, IE7-tel jó, firefox-szal, operával nem.

Az IE7-em magyar, a másik három angol nyelvű.
23

phpmyadmin hiba?

mephi02 · 2007. Júl. 31. (K), 15.37
Most arra gyanakszom, hogy a phpmyadmin miatt lehet a hiba...
Csinálok egy utf-8-as űrlapot, és azzal viszem fel az adatokat, nem a phpmyadmin felületén...
24

w3c validator

mephi02 · 2007. Júl. 31. (K), 16.36
Ráeresztettem a w3 valiatort az oldalra, erre ezt kaptam:

Important Warnings

The validator has found the following problem(s) prior to validation, which should be addressed in priority:

1. Warning Character Encoding mismatch!

The character encoding specified in the HTTP header (iso-8859-2) is different from the value in the XML declaration (utf-8). I will use the value from the HTTP header (iso-8859-2).

Ez lehet a probléma... Mindenesetre nem értem, hogy lehet iso-8859-2 a headerben, amikor ezzel kezdődik a php fájlom a legelején:
<?php
header("Content-type: text/html; charset=utf-8");
?>
25

apache

zila · 2007. Júl. 31. (K), 16.41
Át kéne nézni az apache config-ot nincs-e benne AddDefaultCharset iso-8859-2 valahol. Vagy .htaccess-ben is lehet ilyen. Firefox live http headers extension-nel meg lehet nézni milyen headerek jönnek a szerverről.
26

Firefox live http headers

mephi02 · 2007. Júl. 31. (K), 17.02
Ezt adta ki a firefox extension:
http://www.dxxxxx.hu/main.php

GET /main.php HTTP/1.1
Host: www.dxxxxx.hu
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cache-Control: max-age=0

HTTP/1.x 200 OK
Date: Tue, 31 Jul 2007 14:59:15 GMT
Server: Apache/2.0.52 (Red Hat)
X-Powered-By: PHP/4.3.9
Content-Length: 7311
Content-Type: text/html; charset=ISO-8859-2
X-Cache: MISS from server.fabinet.hu
X-Cache-Lookup: MISS from server.fabinet.hu:8080
Connection: keep-alive
27

ďťż

mephi02 · 2007. Júl. 31. (K), 17.09
Most vettem észre, hogy a böngészőben az oldal legelején van pár karakternyi krikszkraksz, nevezetesen a következő:
ďťż
Kitöröltem az egész oldalt, csak az első egysoros <?php blokkot hagytam meg, és akkor is megjelenik...
Sőt... Most nézem, ha csak egyetlen szóközt hagyok a .php fájlomban, egyébként teljesen üres, akkor is ďťż jelenik meg a böngészőben.
Ha nincs egy karakter sem a file-ban, akkor nem jelenik meg semmi...
Számomra ez egy kisebb X-akta...
28

nem X-akta, BOM

Táskai Zsolt · 2007. Júl. 31. (K), 17.50
az ott a BOM a fájl elején. mivel ott van a <? előtt, ezért a header függvény már nem hat. erről warningot is kapsz (nevezetesen arról, hogy a header már kiment, nem tudod módosítani), csak ezek szerint az nálad ki van kapcsolva.

a kódszerkesztődben kapcsold ki a BOM-ot a PHP fájlokra és erre az érintettre meg pláne.
29

Èrdekes...

Ronyn · 2007. Júl. 31. (K), 20.29
Kiprobáltam a SET NAMES 'utf-8' parancsot,erre ez a hibajelzés jött vissza>
2007.07.31 20:16:53 [] {(*00) Unknown character set: 'utf-8''} [Vk>> unknow]
Az alter parancsokra szintén hibát jelzett?
Vagy ez verziofüggő?
30

sqlben: utf8

Táskai Zsolt · 2007. Júl. 31. (K), 21.20
a set names után utf8 dukál.

amúgy eltévedt a válaszod.
32

notepad++ és a BOM

mephi02 · 2007. Aug. 1. (Sze), 09.23
Notepad++-t használok a szerkesztéshez, és itt a Format -> UTF-8 without BOM szürke, nem tudom kijelölni...
Azt hiszem keresek valami más progit...
33

SIKERÜLT!

mephi02 · 2007. Aug. 1. (Sze), 09.32
Megvan, először át kellett váltani ANSI-ba, onnan engedte az UTF-8 without BOM -ot.

Öröm és bódottá' van, működik, ahogy kell... Köszönöm mindenkinek a segítséget!
34

Mellesleg...

Ronyn · 2007. Aug. 1. (Sze), 09.40
Notepad++ honlapján van magyar nyelvi csomag is a programhoz...
35

notepad++ nyelv

mephi02 · 2007. Aug. 1. (Sze), 11.02
Nem azzal volt a gondom, hogy nem értettem a menüket, hanem nem engedte közvetlenül átállítani a kódolást. ;)
31

Elnéztem

Ronyn · 2007. Aug. 1. (Sze), 00.06
Kosz)
Igen,ezt tul automatikusan irtam...
Bár az alter utasitás továbbra is hibát jelez...
36

köszönet

Porrima · Jún. 26. (Sze), 11.56
Nekem is ilyen problémám lett egy szerverfrissítés következtében, és a tanácsok alapján sikerült megoldani; ismételten köszönöm a segítő hozzászólásokat.
38

Sok helyen félrecsúszhat a

inf3rno · Jún. 27. (Cs), 17.17
Sok helyen félrecsúszhat a karakterkódolás, nem csak a mysql-nél. Jó lenne megnézni, hogyha a php kódba (gondolom az a nyelv) írsz valamilyen utf-8 karaktert, akkor az rendesen átmegy e. A mysql-el csak utána érdemes foglalkozni. Általában jó beállítani az adatbázison az utf-8 kódolást meg a rendezésnél, hogy magyar abc szerint menjen (collation). Utána még külön a mysql kliensnél is be kell lőni, hogy a kapcsolat is utf-8 legyen. Nagyjából ennyi a titka. Az importálás még érdekesebb, mert lehet, hogy eltérő a karakter kódolása annak, amit bele akarsz tenni az új adatbázisodba.