Autor Zpráva
vitisport
Profil *
Dobrý den všem,

obracím se s žádostí o pomoc jestli někdo bude vědět, už jsem a nad tím a nad googlováním strávil hodiny a jsem v koncích.

Mám web v UTF-8 kodování, určité položky natahuju s csv souboru (samozřejmě taky v utf-8) funkcí fopen. Web je na serveru s php tuším 4.2 a všechno běží dlouhodobě jak má.

Nyní na hostingu přecházejí na verzi php 5 a ejhle ... natahované položky z csv souboru se vypisují až od znaku který se dá zapsat standarně jednobajtově tedy např. v češtině eská republíka, védsko, na (to když to je Čína). Přitom když je takový znak uprostřed slova tak s tím není problém (Lotyšsko, Maďarsko ...).

Ještě markantnější je to v ruské mutaci - azbuka se nevypisuje vůbec ale jakmile jedno heslo začíná závorkou vypíše se běz problémů : (+/-) очки. Kdyžby to slovo ale nezačínalo závorkou tak zase ani ťuk....

díky za případnou radu či nasměrování

Honza
nightfish
Profil
vitisport
kus kódu, který se stará o načítání CSV a výpis by nebyl?
vitisport
Profil *
Tenhle kus zdrojáku načítá a vypisuje ty data.


$filepopisky = fopen ("./slovnik/popisligfotbal.csv", "r");
while ($popisky = fgetcsv ($filepopisky, 1024, ";"))
{
echo "<li><a href="index.php?clanek=analyzy&sekce=fotbal&liga=".$popisky[0]."&lang= ".$jazyk."&tab=1&zap=1"><img src="./images/vlajky/".$popisky[2].".gif" border="0" width="20"> ".$preklad[$popisky[3]][$jazyk]." ".$popisky[4]."</li></a>";

}

fclose ($filepopisky);


A tenhle kus kdesi uplně na začátku načítá slovník pro překlad slov....


$souborpropreklad="slovnik.csv";

$filepreklad = fopen ("$portal/slovnik/$souborpropreklad", "r");
while ($data = fgetcsv ($filepreklad, 1024, ";"))
{
$preklad[$data[0]]["cs"]=$data[0];
$preklad[$data[0]]["$jazyk"]=$data[$poradidat];
}

fclose ($filepreklad);



Problém je názorně vidět na dvou zcela totožných stránkách na dvou různých serverech používajících jinou verzi php

http://www.vitisport.cz/index.php?clanek=analyzy&sekce=fotbal&liga=ces ko&lang=cs&tab=1&zap=1
http://www.vitisport.de/index.php?clanek=analyzy&sekce=fotbal&liga=ces ko&lang=cs&tab=1&zap=1

ještě názorněji na:
http://www.vitisport.cz/index.php?clanek=analyzy&sekce=fotbal&liga=ces ko&lang=ru&tab=1&zap=1
http://www.vitisport.de/index.php?clanek=analyzy&sekce=fotbal&liga=ces ko&lang=ru&tab=1&zap=1
krteczek
Profil
a jsou určitě ty texty v utf-8?
DoubleThink
Profil *
Note that fgetcsv() uses the system locale setting to make assumptions about character encoding.
So if you are trying to process a UTF-8 CSV file on an EUC-JP server (for example),
you will need to do something like this before you call fgetcsv():

setlocale(LC_ALL, 'ja_JP.UTF8');
vitisport
Profil *
To: DoubleThink

Díky za pomoc, bylo to tohle - je to vyřešený. Tímhle směrem jsem vůbec nepřemýšlel.

Díky i všem ostatním přispívajícím snažícím se pomoc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: