PDA

Просмотр полной версии : Win-1251 и unescape


point111
16.02.2010, 17:56
загружаю внешний XML, у него в заголовке encoding="Windows-1251", в AS2 прописано System.useCodepage = true;

для того, чтобы сделать перевод строки хочу использовать %0A, для этого делаю unescape текста, %0A работает, но текст меняет кодировку, если unescape не делать, то кодировка отображается верно.

если в XML поменять заголовок на encoding="UTF-8" и сохранить его в этой кодировке а System.useCodepage отключить, то unescape работает правильно - и кодировку не меняет и строку переносит.

Но мне надо, чтобы XML был в Win-1251 - его пользователь должен настраивать, а не все юзера в курсе что такое UTF-8

/n вставленный в текст почему-то не работает, наверное что-то надо включить, а что, не знаю...


System.useCodepage = true;


_root.createTextField ("size_txt",1,10,10,300,120);
size_txt.wordWrap = true;


var text_from_xml:XML = new XML();
text_from_xml.ignoreWhite = true;
Load_txt_from_XML_fn("testcode.xml");




function Load_txt_from_XML_fn(content_xml) {

text_from_xml.load(content_xml);// что загрузить
text_from_xml.onLoad = loadData;// запустить когда загрузится

function loadData(success) {
if (success == true) {
rootNode = text_from_xml.firstChild;//перый узел
size_txt.text = unescape(rootNode.childNodes[2].attributes.value);
//size_txt.text =rootNode.childNodes[2].attributes.value;
size_txt._height = 400;
trace (text_from_xml)
} else {
trace("no text_from_xml");
}
}

}



<?xml version="1.0" encoding="Windows-1251"?>
<response command="settings">
<status>
<success/>
</status>
<setting id="head" value="TRI-LOGIC BLUE"/>
<setting id="copy" value="Самый %0Aоригинальный %0A%0A%0Aпредставитель семейства WEST /nTRI-LOGIC/n/nМягкий гармоничный вкус BLUE достигается благодаря идеальному балансу смолы\никотина и сочетанию табаков высшего качества. Новый угольный фильтр позволит Вам почувствовать лучшее в направлении American Blend. Отвечающая современным тенденциям пачка BLUE выгодно отличает эти сигареты, подчеркивая Вашу индивидуальность!"/>
</response>

udaaff
16.02.2010, 18:16
загружаю внешний XML, у него в заголовке encoding="Windows-1251", в AS2 прописано System.useCodepage = true;

для того, чтобы сделать перевод строки хочу использовать %0A, для этого делаю unescape текста, %0A работает, но текст меняет кодировку, если unescape не делать, то кодировка отображается верно.

если в XML поменять заголовок на encoding="UTF-8" и сохранить его в этой кодировке а System.useCodepage отключить, то unescape работает правильно - и кодировку не меняет и строку переносит.

Но мне надо, чтобы XML был в Win-1251 - его пользователь должен настраивать, а не все юзера в курсе что такое UTF-8
"Гениальное" решение. Вы так "заботитесь" о пользователях включая System.useCodepage, что те из них, у которых система использует не Windows-1251, вообще, вашим творением воспользоваться не смогут.

point111
16.02.2010, 18:33
Это весьма небольшой процент, которым я могу пожертвовать. Вполне возможно, что XML будет всё таки в UTF 8, но на данном этапе 1251 мне необходим. В XML будут данные, которые заполняю не я, это будет "творчество" пользователей форума, я делаю только "движок", который эти данные визуализирует.


С переводом строки решил
http://www.flasher.ru/forum/showthread.php?p=878042

Но вопрос с перекодировкой остается открытым, всё равно когда нибудь возникнет необходимость воткнуть в win 1251 служебные символы.