ugrás a tartalomhoz

Űrlapokból érkező 'ő' betűk hibásak

Anonymous · 2005. Júl. 26. (K), 23.36
Hello!

Adott egy fórum. Van akinél működik az "ő" betű van akinél nem és egy "?" karaktert ad hozzá. Ez mindig akkor jön elő, ha új hozzászólást ír be. Ha pl. én írom az ő betűt nekem müködik de neki nem ? karaktert add hozzá az adatbázishoz... :(

Van akinél pedig a magyar karakterek helyett ilyesmiket ad hozzá:
ő
Ez az "ő" betű :)

Az adatbázisban a mező típusa: latin2_hungarian_ci ha ez számít valamit...

Mi lehet a probléma?
 
1

HTML kódolása

attlad · 2005. Júl. 27. (Sze), 00.44
A HTML-t milyen karakterkódolással küldöd ki? A HTTP fejlécben és META elemben meghatározott karakterkódolás megegyezik? (ha mindkettő van) Meg a FORM elemnek megadhatsz accept-charset paramétert.

Attila
2

<meta

Anonymous · 2005. Júl. 27. (Sze), 07.10
<meta http-equiv="Content-Type" content="text/html;">

csak ennyi. Html fejléce nincs kalibrálva. A FORM elemnek hol adhatok meg accept-charset paramétert?
Az adatbázisban nem lehet típus beállítás hiba? Ne rakjam más típusra?
3

Charset

Poetro · 2005. Júl. 27. (Sze), 08.17
Mindenképpen adj meg charset-et, különben mindenki olyanban írja, amilyen neki alapértelmezettnek be van állítva. Jelen esetben a fejléc:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
És mindenképpen érdemes a webszervernek is ugyanezt az értéket kiadnia, amikor a tartalmat kiszolgálja.
Ha PHPban van megírva a form, akkor:

<?php
header("Content-Type: text/html; charset=iso-8859-2");
?>
Így mindenki tudja majd, hogy milyen karakterkészlető az oldal, és valószínűség szerint milyen karakterkészletet vár.
A form karakterkészlet beállítása pedig valami hasonlóan:

<form action="http://somesite.com/forum/hozzaszolas"
method="post" accept-charset="iso-8859-2">
...form tartalom...
</form>
--------
Poetro
4

Kiegészítés

kgyt · 2005. Júl. 27. (Sze), 12.44
Ha sima HTML, akkor .htaccess fájlban kényszeríthető a kódolás:

AddCharset ISO-8859-2 .html
# vagy
AddType text/html;charset=ISO-8859-2 .html
# vagy
AddDefaultCharset ISO-8859-2
# vagy
<Files "example.html">
  # a files megadható regexp segítségével is lásd link
  ForceType text/html;charset=ISO-8859-2
</Files>
# esetleg a httpd.conf-ban is lehet állítani ezeket...
AddCharset AddType AddDefaultCharset Files ForceType

Ha nem PHP-t, hanem ASP-t használsz, akkor a következőképpen:

<% response.AddHeader "Content-type", "text/html; charset=iso-8859-2" %>
vagy
<% response.Charset="iso-8859-2" %>
XML fejlécben (prolog):

<?xml version="1.0" encoding="iso-8859-2" ?>
--
Szeretettel: Károly György Tamás
kgyt(a)kgyt.hu - http://kgyt.hu
5

Hogyan lehet kideríteni?

Tome · 2005. Júl. 27. (Sze), 13.12
Olyan webszervernél aminek a config fájljaihoz nem férek hozzá, hogyan tudom kideríteni, hogy a HTTP fejlécben milyen karakterkódolás van megadva? (pl. ingyenes szolgáltatók)
6

segédeszközök

Hojtsy Gábor · 2005. Júl. 27. (Sze), 13.17
LiveHTTPHeaders, Web Developer Toolbar ilyen funkciójával.
7

+

kgyt · 2005. Júl. 27. (Sze), 13.35
http-header-check
és ennek
bookmark változata

--
Szeretettel: Károly György Tamás
kgyt(a)kgyt.hu - http://kgyt.hu
8

Köszönöm, a

Anonymous · 2005. Júl. 27. (Sze), 17.02
Köszönöm, a segítséget!
Sajnos rögtön nem fog kiderülni a fejléces okosság. Azonnal frissítem az oldalt és majd idővel...
Igen a baj, az hogy nem saját server, hanem uw-s, így a config fájl elérhetetlen. Próbálkozok az előzőkkel.

Szóval akkor az adatbázisban a típus megfelelő? latin2_hungarian_ci
Először erre gyanakodtam. Lehet ez is a hiba?
9

Ettől nem lesz rossz

Hojtsy Gábor · 2005. Júl. 27. (Sze), 20.53
Már a PHP kapja meg rosszul az ékezetes dolgokat, tipikus hiba. Attól még, hogy uw.hu, a PHP header() függvényét kiválóan használhatod, ahogy fent írták.