Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam!
Jest prosty skrypt zapisujący w pliku CSV treść tekstową - pobiera z pola tekstowego z formularza treść i poprzez funkcję "fwrite" zapisuje ją do pliku w formacie CSV, znakiem separującym pola jest znak "|". I co jest najważniejsze skrypt niezaleznie czy korzysta z funkcji formatujących (takich jak "stripsplashes" czy też obcinających ciąg do żądanej długości "substr") czy też nie to działanie jego kończy się zawsze tak samo:
1. Kiedy jest polski znak na poczatku ciagu - serwer go usuwa.
2. Kiedy polski znak znajduje się w środku ciagu - serwer go pozostawia.
Przykładowo:
Daje w pliku słowo: "Łańcuch" -> wyświetlone zostaje "ańcuch"
Dam w pliku słowo: ".Łańcuch" -> wyswietlone będzie ".Łańcuch"
Mam taki problem system to lenny + apache2 + php5 wszystko z paczek. Nie mogę tego problemu rozwiązać. Na gentoo i centos działa ok.
Offline
(poufny) kod dostalem ...
1. dlaczego iso a nie utf8 (domyslne kodowanie w Lenny)?
2. nie widze nigdzie wywolania funkcji fwrite
3. sproboj moze wydlubac z tego fragment ktory robi problem ... czyli:
a) mamy jakis napis
b) robimy na nim jakies operacje
c) zapisujemy
d) widzimy ze zle zapisal
... bo studiowanie calej aplikacji jest troche meczace i malo sensowne ...
Offline
to inaczej index.php
<?php // open file $fh = fopen("test.cvs", "r"); // read and echo out values for ($row = 0; $line_array = fgetcsv ($fh, 100000); ++$row) { echo "<p>"; $nr_elements = count($line_array); echo "Number of elements in row $row: $nr_elements<br>"; for($i = 0; $i < $nr_elements; $i++) echo "$i: $line_array[$i]; "; echo "</p>"; } ?>
plik test.cvs
Żmuda Tomasz Żmudzka Mirosława Żółtowska Agnieszka
a wyświetla
Number of elements in row 0: 1 0: muda Tomasz; Number of elements in row 1: 1 0: mudzka Mirosława; Number of elements in row 2: 1 0: towska Agnieszka;
Offline
Note: Locale setting is taken into account by this function. If LANG is e.g. en_US.UTF-8, files in one-byte encoding are read wrong by this function.
Upewnij się, że z kodowaniem jest wszystko w porządku. Możesz też spróbować odczytać linijki w standardowy sposób, a następnie użyć funkcji explode().
Offline
locale LANG=pl_PL LC_CTYPE="pl_PL" LC_NUMERIC="pl_PL" LC_TIME="pl_PL" LC_COLLATE="pl_PL" LC_MONETARY="pl_PL" LC_MESSAGES="pl_PL" LC_PAPER="pl_PL" LC_NAME="pl_PL" LC_ADDRESS="pl_PL" LC_TELEPHONE="pl_PL" LC_MEASUREMENT="pl_PL" LC_IDENTIFICATION="pl_PL" LC_ALL=
więc locale jest ok, plik tez iso-8859-2 i dalej nie wyświetla poprawnie
Ostatnio edytowany przez mihoo_koz (2010-01-14 10:59:31)
Offline
dałem
if(setlocale(LC_CTYPE, "pl_PL")!="pl_PL"){ die("couldn't set the required locale"); // just for testing }
i teraz działa ok. Nie wiem czy jest dokońca ok, ale po dodaniu wyświetla pierwsze polskie znaki.
Offline
pisalem:
bercik napisał(-a):
dlaczego iso a nie utf8 (domyslne kodowanie w Lenny)?
jak chesz iso to lepiej podawaj jawnie w nazwach locale ze to ma byc iso a nie tylko ze pl_PL
Ostatnio edytowany przez bercik (2010-01-14 16:49:05)
Offline
locale na iso-8859-2 też ustawiałem i nie pomagało.
Ostatnio edytowany przez mihoo_koz (2010-01-14 23:00:42)
Offline
na samym poczatku zaraz po '<?' ustaw: header('Content-Type: charset=iso-8859-2')
a jak nie to tutaj poczytaj: http://forum.php.pl/index.php?showtopic=26188
Offline
jezoo napisał(-a):
na samym poczatku zaraz po '<?' ustaw: header('Content-Type: charset=iso-8859-2')
a jak nie to tutaj poczytaj: http://forum.php.pl/index.php?showtopic=26188
to też nic nie pomaga, dziala tylko to co podałem wyżej
Offline