Thread View: pl.comp.lang.javascript
8 messages
8 total messages
Started by Paweł
Mon, 30 Aug 2010 17:16
Jak odczytać kodowanie
Author: Paweł
Date: Mon, 30 Aug 2010 17:16
Date: Mon, 30 Aug 2010 17:16
7 lines
1017 bytes
1017 bytes
Witam ! Na początku pliku XML znajduje się informacja o kodowaniu znaków. np. <?xml version="1.0" encoding="ISO-8859-2"?> Czy w JS są jakieś specjalne instrukcje do jej odczytania ? Paweł
Re: Jak odczytać kodowanie
Author: Peter May
Date: Mon, 30 Aug 2010 18:13
Date: Mon, 30 Aug 2010 18:13
11 lines
1152 bytes
1152 bytes
W dniu 2010-08-30 19:16, Paweł pisze: > Witam ! > > Na początku pliku XML znajduje się informacja o kodowaniu znaków. > np. <?xml version="1.0" encoding="ISO-8859-2"?> > Czy w JS są jakieś specjalne instrukcje do jej odczytania ? A do czego Ci to potrzebne? -- Peter
Re: Jak odczytać kodowanie
Author: Paweł
Date: Mon, 30 Aug 2010 20:13
Date: Mon, 30 Aug 2010 20:13
16 lines
1477 bytes
1477 bytes
>> Na początku pliku XML znajduje się informacja o kodowaniu znaków. >> np. <?xml version="1.0" encoding="ISO-8859-2"?> >> Czy w JS są jakieś specjalne instrukcje do jej odczytania ? > > A do czego Ci to potrzebne? > Wyświetlam informacje zawarte w pliku XML. Pliki są pobierane przez Ajaxa z różnych serwerów i mają różne kodowanie. Np. w przypadku ISO-8859-2 nie mam polskich liter. Wykombinowałem sobie, że w prosty sposób mogę przekodować znaki. Musze jednak wcześniej odczytać kodowanie. Paweł
Re: Jak odczytać kodowanie
Author: Artur Muszyński
Date: Mon, 30 Aug 2010 20:37
Date: Mon, 30 Aug 2010 20:37
10 lines
1428 bytes
1428 bytes
W dniu 2010-08-30 22:13, Paweł pisze: > Wyświetlam informacje zawarte w pliku XML. > Pliki są pobierane przez Ajaxa z różnych serwerów i mają różne kodowanie. > Np. w przypadku ISO-8859-2 nie mam polskich liter. > Wykombinowałem sobie, że w prosty sposób mogę przekodować znaki. Musze > jednak wcześniej odczytać kodowanie. a jeśli użyjesz responseXML? artur
Re: Jak odczytać kodowanie
Author: porneL
Date: Mon, 30 Aug 2010 21:25
Date: Mon, 30 Aug 2010 21:25
23 lines
1799 bytes
1799 bytes
On Mon, 30 Aug 2010 21:13:27 +0100, Paweł <pawel.neo@neostrada.pl> wrote:
>>> Na początku pliku XML znajduje się informacja o kodowaniu znaków.
>>> np. <?xml version="1.0" encoding="ISO-8859-2"?>
>>> Czy w JS są jakieś specjalne instrukcje do jej odczytania ?
>> A do czego Ci to potrzebne?
>>
>
> Wyświetlam informacje zawarte w pliku XML.
> Pliki są pobierane przez Ajaxa z różnych serwerów i mają różne kodowanie.
Przeglądarka powinna wczytać plik i skonwertować znaki automatycznie. Z
punktu widzenia JS wszystkie XML-e we wszystkich kodowaniach powinny
wyglądać identycznie — w Unicode.
Upewnij się, że pliki są wysyłane z odpowiednimi deklaracjami kodowania
(text/xml teoretycznie nie pozwala na odczytywanie kodowania z <?xml?>,
powinno być application/xml albo kodowanie podane w HTTP Content-Type.
Kodowanie strony ani pliku JS na nic nie wpływa).
--
http://pornel.net
this.author = new Geek("porneL");
Re: Jak odczytać kodowanie
Author: Paweł
Date: Tue, 31 Aug 2010 07:59
Date: Tue, 31 Aug 2010 07:59
38 lines
2530 bytes
2530 bytes
p
>> Wyświetlam informacje zawarte w pliku XML.
>> Pliki są pobierane przez Ajaxa z różnych serwerów i mają różne kodowanie.
>
> Przeglądarka powinna wczytać plik i skonwertować znaki automatycznie. Z
> punktu widzenia JS wszystkie XML-e we wszystkich kodowaniach powinny
> wyglądać identycznie — w Unicode.
>
> Upewnij się, że pliki są wysyłane z odpowiednimi deklaracjami kodowania
> (text/xml teoretycznie nie pozwala na odczytywanie kodowania z <?xml?>,
> powinno być application/xml albo kodowanie podane w HTTP Content-Type.
> Kodowanie strony ani pliku JS na nic nie wpływa).
>
Tylko sporadycznie używam JS. Tak więc moje wiadomości na ten temat są
niewielkie.
Muszę napisać bardzo uproszczony czytnik kanałów RSS.
Nie chodzi jednak o PC i standardową przeglądarkę. Zapewne z tego powodu
pojawił się problem z kodowaniem znaków.
Korzystając z okazji mam jeszcze jedno pytanie:
Wczytuję plik XML przez Ajaxa do zmiennej xmlstring
Następnie wykonuję:
var xmlobject = (new DOMParser()).parseFromString(xmlstring, "text/xml");
var root = xmlobject.getElementsByTagName('rss')[0];
var channels = root.getElementsByTagName("channel");
...
Dla wielu kanałów RSS jakie znalazłem wszytko działa prawidłowo
Jednak dla tego: http://www.hdtv.com.pl/forum/external.php?type=RSS2
w ostatniej instrukcji pojawia się błąd: "root has no properties"
Plik XML jest raczej prawidłowy. Co więc jest przyczyną błędu ?
Paweł
Re: Jak odczytać kodowanie
Author: porneL
Date: Tue, 31 Aug 2010 19:53
Date: Tue, 31 Aug 2010 19:53
39 lines
2383 bytes
2383 bytes
On Tue, 31 Aug 2010 08:59:46 +0100, Paweł <pawel.neo@neostrada.pl> wrote:
> Wczytuję plik XML przez Ajaxa do zmiennej xmlstring
>
> Następnie wykonuję:
Nie wiedziałem, że to się da tak bardzo skomplikować :)
XHR ma responseXML zawierające od razu przeparsowany XML. Od tego jest ten
X w AJAX.
> var xmlobject = (new DOMParser()).parseFromString(xmlstring, "text/xml");
Wg odpowiednich RFC text/xml nie obsługuje kodowania innego, niż ASCII.
Jeżeli ten parser trzyma się standardu, to umyślnie nie pozwoli na użycie
latin2. Jak bardzo chcesz podać typ, to podaj application/xml.
[http://www.xml.com/pub/a/2004/07/21/dive.html]
Poza tym odpalając własny parser ignorujesz nagłówki HTTP, które mogą
zawierać informację o kodowaniu.
> var root = xmlobject.getElementsByTagName('rss')[0];
od tego jest documentElement
> Dla wielu kanałów RSS jakie znalazłem wszytko działa prawidłowo
> Jednak dla tego: http://www.hdtv.com.pl/forum/external.php?type=RSS2
> w ostatniej instrukcji pojawia się błąd: "root has no properties"
Wygląda ok:
http://feedvalidator.org/check.cgi?url=http%3A%2F%2Fwww.hdtv.com.pl%2Fforum%2Fexternal.php%3Ftype%3DRSS2
więc to musi być problem z twoim parsowaniem (szklana kóla mówi, że
zgubiona deklaracja kodowania powoduje błąd parsowania i zwrócenie null
przez parser, po czym próbujesz wykonać metody na nullu).
--
http://pornel.net
this.author = new Geek("porneL");
Re: Jak odczytać kodowanie
Author: Paweł
Date: Wed, 01 Sep 2010 13:01
Date: Wed, 01 Sep 2010 13:01
17 lines
1616 bytes
1616 bytes
> XHR ma responseXML zawierające od razu przeparsowany XML. Od tego jest > ten X w AJAX. JS znajduje się na stronie taką deklaracją: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> Gdy odczytuję responseXML plik XML z kodowaniem UTF-8 wszystko jest OK. Dla ISO-8859-2 dzieje się coś dziwnego: Np. Taki ciąg znaków "Być mo" w pliku XML to 0x42 0x79 0xE6 0x20 0x6D 0x6F Po odczytaniu z responseXMLmam otrzymuję znaki o takich kodach 0x42 0x78 0x682D 0x6F Tego już nie można odkodować. Paweł
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads