Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Кодировка XML (http://www.flasher.ru/forum/showthread.php?t=106834)

dukei 19.01.2008 22:46

Кодировка XML
 
Что-то непонятно, новая фича XML в AS3 игнорирует кодировку загружаемого XML, что ли?

XML.ignoreProcessingInstructions = false;
не помогает.

Какую бы кодировку я не писал бы в <?xml version="1.0" encoding="windows-1251"?>, всё равно при загрузке она весь текст внутри считает за UTF-8, и выводит всё в контролки соответственно (то есть, если текст в windows-1251, то в контролки выводятся крякозябры).

Кто-нибудь знает, как можно в переменную типа XML загрузить простой файл в кодировке windows-1251, например:

<?xml version="1.0" encoding="windows-1251">
<root>
<text>
Русский текст
</text>
</root>

?

DRAGOnoid 20.01.2008 00:05

Код:

<?xml version="1.0" encoding="UTF-8">
причём весь текст внутри тоже должен быть в этой кодировки а не в windows.

etc 20.01.2008 01:56

Само содержимое файла должно быть в этой кодировке. Указанная в заголовке файла кодировка лишь помогает определить кодировку файла, а не сделать её таковой.

dukei 21.01.2008 23:08

Вообще-то я и сам в курсе, что текст в файле должен быть в той же кодировке, что прописана в processing instructions. Вопрос был не об этом.

Смысл в том, что независимо от значения кодировки в processing instructions флэш кладет в свои переменные текст в кодировке, как она была в текстовом файле, без преобразования во внутренний формат. То есть, если файл XML в windows-1251, то текст в переменной, судя по всему, будет тоже в windows-1251, и, соответственно, при выводе куда-нить в контролку, будет отображен в виде крякозябр.

И наоборот, если текст в XML в UTF-8, а в processing instructions я прописал windows-1251, то флэшу на это наплевать. Он прочитает текст, как он есть, в переменных будет текст в UTF-8, соответственно, они прекрасно выведутся в контролки.

Есть авторитетные мнения по существу вопроса?

etc 21.01.2008 23:25

Кодировка — только utf-8. Какие ещё у вас вопросы по этому поводу?

BlooDHounD 21.01.2008 23:33

ни один текстовый редатор вам не будет читать инструкции :) он прсто с ними сверится :) инструкции это запись о том в каком виде надо читать. если вы записали 1251, а в инструкциях ютф прописали, то большенство вам попробует прочитать файв в ютф. само сабой вы получите иероглифы.

dukei 21.01.2008 23:41

Цитата:

Сообщение от __etc
Кодировка — только utf-8. Какие ещё у вас вопросы по этому поводу?

Вот по этому и вопросы. Нахрена в XML предусмотрены processing instructions и возможность указать кодировку, если Flash, с его A4X не поддерживает ничего, кроме UTF-8?

И хотелось бы знать, где-то об этом написано официально? имеется в виду, о том, что флэш умеет читать только XML в кодировке UTF-8.

А вообще - проблема вовсе не высосана из пальца. Мне rss2 выдает XML в кодировке windows-1251. И в нем честно написано encoding="windows-1251". Флэш прекрасно читает её, а вывести куда-нить русский текст не может.

Как теперь флэшем читать RSS-фиды в кодировке, отличной от windows-1251?

etc 21.01.2008 23:43

В хелпе.
Вы вообще в курсе, что XML разрабатывался не только для флеша?

dukei 21.01.2008 23:48

Цитата:

Сообщение от __etc
В хелпе.
Вы вообще в курсе, что XML разрабатывался не только для флеша?

В курсе. Не понимаю, почему так трудно было поддержать XML нормально. Впрочем, ладно, как сделали, так сделали.

А вообще - проблема вовсе не высосана из пальца. Мне rss2 выдает XML в кодировке windows-1251. И в нем честно написано encoding="windows-1251". Флэш прекрасно читает её, а вывести куда-нить русский текст не может.

Как теперь флэшем читать RSS-фиды в кодировке, отличной от UTF-8?

etc 21.01.2008 23:51

Нет никакого смысла поддерживать всяческие левые кодировки, типа win1251, когда есть принятый безглючный и универсальный стандарт utf-8.
То, что фиды идут в виндовой кодировке — проблема того, кто этот фид слепил.

Если очень надо, можно прочитать различные кодировки через ByteArray, но я бы этим занимался в самом крайнем случае.


Часовой пояс GMT +4, время: 18:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.