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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-01-12 22:53:21

  mihoo_koz - Użytkownik

mihoo_koz
Użytkownik
Zarejestrowany: 2006-09-27

apache php ?

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

 

#2  2010-01-13 00:30:48

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: apache php ?

mozesz pokazac stosowny fragment kodu php?


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#3  2010-01-13 13:06:17

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: apache php ?

(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 ...


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#4  2010-01-14 09:34:41

  mihoo_koz - Użytkownik

mihoo_koz
Użytkownik
Zarejestrowany: 2006-09-27

Re: apache php ?

to inaczej index.php

Kod:

<?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

Kod:

Żmuda Tomasz
Żmudzka Mirosława
Żółtowska Agnieszka

a wyświetla

Kod:

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

 

#5  2010-01-14 09:51:19

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Re: apache php ?

fgetcsv()

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

 

#6  2010-01-14 10:59:18

  mihoo_koz - Użytkownik

mihoo_koz
Użytkownik
Zarejestrowany: 2006-09-27

Re: apache php ?

Kod:

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

 

#7  2010-01-14 11:43:14

  mihoo_koz - Użytkownik

mihoo_koz
Użytkownik
Zarejestrowany: 2006-09-27

Re: apache php ?

dałem

Kod:

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

 

#8  2010-01-14 16:48:02

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: apache php ?

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)


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#9  2010-01-14 23:00:13

  mihoo_koz - Użytkownik

mihoo_koz
Użytkownik
Zarejestrowany: 2006-09-27

Re: apache php ?

locale na iso-8859-2 też ustawiałem i nie pomagało.

Ostatnio edytowany przez mihoo_koz (2010-01-14 23:00:42)

Offline

 

#10  2010-01-15 15:45:37

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

Re: apache php ?

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


LRU #480459

Offline

 

#11  2010-01-18 09:48:19

  mihoo_koz - Użytkownik

mihoo_koz
Użytkownik
Zarejestrowany: 2006-09-27

Re: apache php ?

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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)