![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 164 Pomógł: 4 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Jest to mój pierwszy post na tym forum, więc z góry przepraszam za złamanie jakiegokolwiek punku regulaminu.
Mam mały problem, a może raczej wątpliwość. Mam stworzony system dla firmy zajmującej się doradztwem majątkowym. Na stronie zawarte są wszystkie dane odnośnie wpłat klientów, prowizji dla pracowników itp. Wpłatę dla danego klienta można dokonać indywidualnie poprzez formatki, i tutaj wszystko jest ok. Ale co, Jeżeli należy dokonać wpłat np. dla 300 osób?? Trochę to pracochłonne. Stąd też powstał oddzielny dział w tym systemie. Tam, importując plik z danymi, mamy możliwość w ciągu 1-2 minut dokonać wpłat dla sporej liczby klientów. I tutaj pojawia się dla mnie wątpliwość. Dokonuję poprawiania błędów strony, które to błędy spowodowane są przez tegoż programistę, który cały system pisał. Ja zmieniłem kodowanie strony na UTF-8..... Po czym powstaje problem. Pliki *.txt które firma otrzymuje mają inne kodowanie aniżeli strona, na którą te wpłaty importujemy. Tym samym powstaje problem z polskimi znakami, które w pliku *.txt są poprawnie widoczne, jednak po zaimportowaniu do strony, powstają jedynie krzaczki. I nie ma się co dziwić, kodowanie strony a tego pliku są zupełnie inne. Aby rozwiązać mój problem, skorzystałem z funkcji iconv(). Pierwszy parametr to kodowanie wejściowe, drugi parametr to wyjściowe, a trzeci to pewien string wejściowy. Gdybym miał pewność, że plik *.txt zawsze będzie miał to samo kodowanie, byłoby ok, no ale nigdy nie wiemy co będzie. Dlatego j a lekko zmodyfikowałem funkcję do poniższej postaci: iconv("","UTF-8",$a); Jak widać, nie podałem kodowania wejściowego sądząc, że PHP weźmie każde kodowanie i przekonwertuje je na UTF-8. Ale nie jest to określone w specyfikacji php. Moje pytanie zatem brzmi, czy mogę czućsię swobodnie tak korzystając z tej funkcji?? Czy mam powody obawiać się, że może zdarzyć się coś nieprzewidywalnego?? Albo, że jakiś plik zostanie niepoprawnie przekonwertowany?? No i czy jest to moduł, który jest czymś dodatkowym, czy każdy serwer go udostępnia?? Będę wdzięczny za każdą informację. Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 9 Dołączył: 8.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
a jak ten plik w ogóle jest pobierany? Wymuszasz ściąganie przez przeglądarkę czy zapisuje się on na serwerze?
Co do kodowania możesz zawsze wykorzystać naglowki do tego celu. Ja mialem ostatnio podobny problem, jednak u mnie to dotyczylo zarówno polskich ogonków, niemieckich kropeczek i bulgarskiej cyrylicy. W moim wypadku plik .txt (czasami .csv) jest ściągany przez przeglądarkę. Żeby naprawić problem kodowania podczas tworzenia plików wykorzystuje header() w którym to ustawiam kodowanie na utf8 co do twojego pytania konkretnie już. Zawsze możesz sprawdzić jakie kodowanie ma ten plik i ustawić je jako parametr |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 164 Pomógł: 4 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zasadniczo jest tak, że plik jest importowany na serwer poprzez przeglądarkę a potem z tego pliku wczytywane są wartości
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
Wg moich doświadczeń iconv( ... ) z pustym pierwszym parametrem świetnie się sprawdza, z jednym wyjątkiem: kiedy dane wejściowe już są w utf-8 to na wyjściu generuje krzaki (trochę to dziwne). Ale to łatwo sprawdzić funkcją mb_check_encoding( ... )
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 164 Pomógł: 4 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czyli rozumiem, że korzystając z funkcji mb_check_encoding() sprawdzam kodowanie pliku i jeżeli jest ono różne od UTF-8, to wówczas zastosować funkcję iconv() (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
No a co z moim pytaniem odnoszącym się do tego, czy ten moduł odowiedzalny za przekodowywanie plików dostępny jest na każdym serwerze?? Tzn. czy przenosząc moją stronę może okazać się, że z powodu braku tego modułu wystąpi błąd w działaniu strony? Czy taka forma tej funkcji będzie poprawna: mb_check_encoding ($tekst, 'UTF-8') (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Ten post edytował Czadus 29.08.2008, 23:21:10 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:10 |