Autor Zpráva
filiphk
Profil
Ahoj,

pokud do formuláře zadám písmeno s diakritkou a za něj tečku, tak po odeslání dotazu se převede na jiné písmeno či písmena, a to následovně:

zadané písmeno - po odeslání dotazu
ě. - ec
š. - a
ř. - f
ž. - e
ý. - fd
á. - e
í. - ed
é. - e
ť. - d
ď. - ef
ň. - f
ó - d
ú - fa
ů - f

Nevím, proč to způsobuje zrovna tečka, jelikož když napíšu za písmeno kterýkoliv jiný znak, výsledkem je písmeno bez diakritiky (např. "á*" se správně převede na "a").
Možná by pomohlo upravit následující podmínku tak, aby "nepropouštěla" tečku, bohužel však nevím jak:

RewriteRule ^jmeno/(.*)$ vyznam-jmen?hledat=dotaz&jmeno=$1 [L]


Formulář je dostupný na adrese http://www.filda.cz/vyznam-jmen
srigi
Profil
Prejdi na kodovanie UTF-8 a bude pokoj. CP-1250 je fakt na pikacu kodovanie. Nezabudni, ze rovnake kodovanie musi mat sablona (HTML dokument) aj .php skript co to bude spracovavat.

A pozor na BOM.
peta
Profil
srigi
UTF-8 je o moc lepsi, ze? 2 byte na 1 znak mi tolik uzasne neprijde.
Nehlede na chyby v PHPMyAdminu, ktery ti vygeneruje z tabulky UTF8 data pri nastavenem UTF8 jako double. Cili 123 jako xyz1xyz2xyz3.

Rovnou jsi mel rici, ze problem je v tom, ze server pouziva UTF8 a jeho program ma spatne nastavene kodovani, zrejme WIN1250. Problem je ale s tim, ze server ma jine kodovani. Ze se jedna o UTF8 je spis nahoda, linuxove pravdepodobna.
Co kdyz by to rozjizdel na MS IIS? :)

_Slzy vzpomínek_ (prvotina), 20. 2. 2005
_Snění_ , 28. 2. 2005
zkusil bych podtrhavat jen nazev basne
filiphk
Profil
Nechtěl jsem tu vyvolat hádku o tom, které kódování je lepší, ale získat radu co s tím. Nejsem sice v tom odborník, ale kdyby bylo zvoleno špatné kódování, tak by to zřejme špatně převádělo všechna písmena s diakritikou a ne jen v případě, že se za ním udělá tečka.

Převést web do UTF-8 by možná bylo řešením, ale raději bych zůstal u současného kódování Windows 1250.
filiphk
Profil
Žádné další rady? Je mi divné, že k tomu dochází jen v případě, že se za písmeno s diakritikou napíše tečka, jinak se vše převádí správně.
filiphk
Profil
Problém vyřešen, za problém s tečkou mohly řádky v .htaccess, které "opravují" adresu:

RewriteBase /
RewriteCond %{QUERY_STRING} ^(.*[^\.\?\),!-"'])[\.\?\),!-"']+$
RewriteRule ^(.*)$ $1?%1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^(.*[^\.\?\),!-"'])([\.\?\),!-"'])+$ $1 [R=301,L]
Toto téma je uzamčeno. Odpověď nelze zaslat.