![]() |
|
||||||||||
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Собственно, результат, честно сохраненный в кодировке windows-1251 c LF+CR переводами строк файл 1.html и кодом без изменений:
[img]http://img65.**************/img65/6852/encodingmc2.png[/img] Тот же вариант, но с параметром «windows-1251» во втором аргументе: [img]http://img230.**************/img230/6440/encoding2ev3.png[/img] Результаты под Windows идентичны, могу привести скриншоты. У тебя, наверное, уникальная версия флеша, с неправильно работающим ByteArray. Последний раз редактировалось etc; 30.05.2008 в 23:40. |
|
|||||
|
стервочка (я мужик)
|
ulik, боюсь Вас разочаровывать, но в моём постулате про секурность сказано, что я могу загрузить, но не могу изменять.
|
|
|||||
|
Регистрация: Jun 2009
Сообщений: 1
|
Спасибо большое. Долго искал решение данной проблемы. Кстати, получил корректные результаты только после того, как во втором аргументе прописал «windows-1251».
|
|
|||||
|
Цитата:
__________________
Дело не в тебе |
|
|||||
|
ветеран форума
|
to AL.exe:
Просто добавить Loader в дисплейлист. Или переместить Loader в нужный Вам контейнер. Загружать можно и без кроссдомена, а вот изменять (срисовывать в BitmapData) не выйдет.
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
|
Если вы не можете поменять кодировку отдаваемых данных на стороне сервера, то перевидите нижеслующий код с PHP на AS, только учтите что вам нужно из cp1251 перевести в utf-8, а прилагаемый ниже пример кода делает наоборот (из utf-8 переводит в cp1251). Но немного усидчивости и вы смолжете подправить его в обратную сторону
setlocale( LC_CTYPE, 'ru_RU.CP1251', 'windows-1251', 'russian' );
// функция преобразования utf8 в win-1251
function utf2win1251( $text ) {
$out = '';
for ( $i = 0; $i < strlen( $text ); $i++ ) {
$c1 = substr ( $text, $i, 1 );
$byte1 = ord ( $c1 );
if ( $byte1 >> 5 == 6 ) { // 110x xxxx, 110 префикс для двухбайтового unicode
$i++;
$c2 = substr ( $text, $i, 1 );
$byte2 = ord ( $c2 );
$byte1 &= 31; // удаление 3 бит двухбайтового префикса
$byte2 &= 63; // удаление 2 бит у двухбайтового префикса (замыкающие)
$byte2 |= ( ($byte1 & 3) << 6 ); // последние 2 бита символа 'c1' становятся двумя первыми символа 'c2'
$byte1 >>= 2; // 'c1' сдвигаем вправо на 2 бита
$word = ( $byte1 << 8 ) + $byte2;
if ( $word == 1025 ) { $out .= chr( 168 ); } // ?
elseif ( $word == 1105 ) { $out .= chr( 184 ); } // ?
elseif ( $word >= 0x0410 && $word <= 0x044F ) { $out .= chr( $word - 848 ); } // ???
else {
$a = dechex( $byte1 );
$b = dechex( $byte2 );
$a = str_pad( $a, 2, '0', STR_PAD_LEFT );
$b = str_pad( $b, 2, "0", STR_PAD_LEFT );
$out .= '&#x' . $a.$b . ';';
}
}
else {
$out .= $c1;
}
}
return $out;
}
если там у вас используется PHP или С, то воспользуйтесь библиотекой iconv, если же у вас там Perl, то на CPAN'е можно найти с десяток библиотек по перекидыванию текста из одной кодировки в другую ( Unicode::Map8, utf8, Convert::Cyrillic, etc ). Последний раз редактировалось catyoshi; 25.06.2009 в 14:15. |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 3
|
Можно ещё попробовать поиграть
Перед получением отключаем Юникод. После - обратно включаем. Может и не совсем корректно, но всё работает. ![]() Последний раз редактировалось Klimtsov; 01.07.2009 в 13:43. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|