![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 4.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam !
Mam mały problem ze skryptem do parsowania xml-la. W momencie kiedy wprowadzę polski znak, skrypt obcina mi wszystko co się znajduje przed znakiem. Np. w pliku xml mam: "Ala ma łabędzia." Po przeprzeparsowaniu wyświetla mi się samo: "łabędzia." Kodowanie w plikach ustawiłem na UTF-8. Poniżej załączam skrypt:
KB |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 3 Dołączył: 9.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
dolaczam sie do pytania bo trafilem na ten sam problem nie wiem czy wogle jest mozliwosc wyciagniecia polskich znakow z xmla kodowanego w iso-8859-1
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 156 Pomógł: 2 Dołączył: 9.09.2006 Skąd: Londyn/Gdynia Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Możena spróbowac kodowania utf-8 i przed kazdym polaczeniem z baza dac: Może ja czegoś nie rozumiem ale co ma wspólnego XML i SQL ?
Bo mialem ten sam problem z xml i u mnie pomoglo:) Dołaczam się do pytania. Miałem to samo i musiałem najpierw zamieniać wszystko w zrodlowym pliku xml z ą na #a; z ł na #l a potem po parsowaniu na nowo zamieniać. Dodatkowo parser sypał się przy pobieraniu długich ciągów znaków. Miałeś tez takie coś może ? -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 19.07.2006 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 4.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam podobny problem, ale jeszcze przed uzycie poleconej funkcji mam krzaki. po uzyciu
$wart = iconv("UTF-8", "ISO-8859-2", $wart); sa polskie litery i wydawaloby sie super gdyby nie to ze obcina czesc zdania az do momentu wystapienia polskiego znaku . Poradzil moze sobie ktos juz tym problemem? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 12.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Może byś tak popatrzył na datę pisania posta...?
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 2 Dołączył: 19.08.2003 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
Ci którzy wciąż maja problem z kodowaniem (wiem ze pytanie było zadane w 2007 roku) powinni pamiętać o kodowaniu odwrotnym (reverse encoding), które w przypadku odczytu danych z zewnętrznych plików jest poprawnym zastosowaniem funkcji iconv().
Przykładowo:
Ten post edytował MaxRipper 8.02.2011, 16:05:34 -------------------- eNetwiz.com - Technologie dla biznesu
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 5.12.2010 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
To temat rzeka, okazuje się, że najwygodniejszym rozwiązaniem, jest zrobienie klasy do automatycznej detekcji kodowania i przed każdą operacją odczytu/zapisu sprawdzenie, czy konieczna jest konwersja i tutaj żadne proste przepisy nie wchodzą w grę, bawiłem się w to i trochę kodu to zajęło... a nie proste iconv itd...
-------------------- Sapletta.pl - Programista PHP, Gdańsk
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 5.07.2011 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Kluczem do rozwiązania tego problemu jest fragment z manuala PHP dotyczący funkcji xml_set_character_data_handler() :
Character data handler is called for every piece of a text in the XML document. It can be called multiple times inside each fragment (e.g. for non-ASCII strings). Parsowanie dla pliku:
Spowoduje dwukrotne wykonanie funkcji przypisanej jako handler do funkcji xml_set_character_data_handler() Można to samemu sprawdzić przypisując jako handler do funkcji xml_set_character_data_handler() poniższą funkcję (dodającą podkreślenie przed "wyparsowanym" stringiem):
Funkcja ta da nam w wyniku: Kod _Sia_ła baba mak i jeszcze kilka polskich znaków: ąćśń Jak widać funkcja została wywołana dwukrotnie. Podkreślenie zostało dodane na początku parsowanych danych i następnie przed pierwszym polskim znakiem. kolejne polskie znaki nie wywołują już ponownego wykonania funkcji. Właśnie ta specyfika działania funkcji xml_set_character_data_handler() powodowała występowanie problemu z, jak mogło się wydawać, kodowaniem znaków. Pozdrawiam (temat trochę stary ale może moja odpowiedz się komuś przyda, wątek w Google wyskakuje dość wysoko) Ten post edytował kwantOne 5.07.2011, 07:35:07 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.05.2025 - 05:47 |