Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проблема с кодировкой, помогите пожалуйста! (http://www.flasher.ru/forum/showthread.php?t=74957)

DafJam 01.02.2006 16:03

Проблема с кодировкой, помогите пожалуйста!
 
Доброго времени суток!
У меня проблема с кодировкой во флэше.
Дело в чем - есть флэш сайт, контент грузиться из текстового документа. И вроде все нормально, все работает и отображается корректно, но мне сообщили, что за границей на этом сайте текст отображается какими-то иероглифами. System.useCodepage=true не панацея :)
Проблема с кодировкой, может кто сталкивался или знает как решить такого рода проблему? Спасибо.

Antares 01.02.2006 16:11

Цитата:

Сообщение от DafJam
Доброго времени суток!
У меня проблема с кодировкой во флэше.
Дело в чем - есть флэш сайт, контент грузиться из текстового документа. И вроде все нормально, все работает и отображается корректно, но мне сообщили, что за границей на этом сайте текст отображается какими-то иероглифами. System.useCodepage=true не панацея :)
Проблема с кодировкой, может кто сталкивался или знает как решить такого рода проблему? Спасибо.

1. Шрифты внедрить
2. Если файл отдается серверным скриптом, рыть там вплоть до настроек вебсервера

DafJam 01.02.2006 16:18

Цитата:

Сообщение от Antares
1. Шрифты внедрить
2. Если файл отдается серверным скриптом, рыть там вплоть до настроек вебсервера

1. А зачем внедрять ? там стоит Ариал...
2. Нет, файл просто грузиться в свф, на пямую.

Kogrom 01.02.2006 16:25

А текст в UTF-8 кодировку переводить не пробовал? или Юникод? По идее и за границей должно быть видно с этими кодировками.

Fl00r 01.02.2006 16:38

Не у всех за бугром есть Arial CYR

DafJam 01.02.2006 16:39

Цитата:

Сообщение от Kogrom
А текст в UTF-8 кодировку переводить не пробовал? или Юникод? По идее и за границей должно быть видно с этими кодировками.

А где перевести в нужную кодировку ? Юникод будет нормально за границей отображаться, но в текстовом редакторе вроде как не предусмотреана смена кодировки.

Fl00r 01.02.2006 16:41

В Блокноте выбираешь сохранить в кодировке UTF-8 или Unicode (в чем разница не знаю)

DafJam 01.02.2006 17:01

Цитата:

Сообщение от Fl00r
В Блокноте выбираешь сохранить в кодировке UTF-8 или Unicode (в чем разница не знаю)

О, точно, спасибо, попробую, надеюсь что получиться :)

Kogrom 01.02.2006 17:08

Цитата:

Сообщение от Fl00r
В Блокноте выбираешь сохранить в кодировке UTF-8 или Unicode (в чем разница не знаю)

У Unicode постоянное число байт на символ, у UTF-8 - переменное. Если большинство букв латинские - лучше UTF-8, получится почти как ASCII кодировка (почти один байт на символ). Если все буквы русские, то наверно лучше Unicode. Тут экспериментировать надо.

olegn 02.02.2006 11:58

Только не забудь помимо этого проверить, у тебя должно быть
Код:

System.useCodePage=false
Тот же результат будет, если этой строки в коде не будет, поскольку default значение равно false.
Проблема всегда в том, что иностранные компьютеры используют не-кириллическую страницу кодировки символов, и если у тебя использовалась
Код:

System.useCodePage=true
то они в соответствии с этой командой подключают свою страицу кодировки, соответственно, кириллические символы не читаются.

Antares 02.02.2006 13:12

Ариалы бывают разные. Бывают, например, без кириллицы.

Kogrom 02.02.2006 17:33

Цитата:

Сообщение от olegn
Только не забудь помимо этого проверить, у тебя должно быть
Код:

System.useCodePage=false

Вот интересно, обязательно это нужно, если загружаем текст с кодировкой UTF-8? Или можно оставить System.useCodePage=true для для того, чтоб тексты с любой кодировкой в России читались?

Nox Noctis 02.02.2006 17:40

вот здесь перечислено (уже 2 года как) много познавательного.

в том числе, см. пункт #27, дана ссылка на вот эту и вот эту страницу форума (там есть картинки).

эти знания не помогают?

Kogrom 02.02.2006 20:00

Цитата из темы
Цитата:

Сообщение от Nox Noctis
system.useCodepage = true;
— говорит о том, что все что загружается из внешних источников
надо воспринимать НЕ КАК ЮНИКОД.
текстовый файл должен быть сохранен в обычном, не-юникодном формате.

Так вот, если настройка system.useCodepage = true стоит, то файлы с UTF-8 кодировкой в России все равно нормально читаются. Вот мне интересно, нормально они читаются за границей или нет?

Nox Noctis 02.02.2006 20:09

Цитата:

Сообщение от Kogrom
Так вот, если настройка system.useCodepage = true стоит, то файлы с UTF-8 кодировкой в России все равно нормально читаются.

это не так.
скорее всего ты при проверке что-то не учел.

убедиться в этом можно при помощи следующего кода:
Код:

// при такой настройке файл в UTF8 не прочитается
System.useCodepage = true;
//
loader = new XML();
loader.onData = function(text)
{
        trace(text);
};
loader.load("http://noregret.org/test/test.txt");

файлик http://noregret.org/test/test.txt содержит пару предложений на русском, кодировка UTF8.

возможно ты протестировал чтение UTF8 на файле, содержащем только латиницу. латиница она и в африке... в UTF8 коды латинских символов однобайтовые и совпадают с кодами таблицы win1252. то есть разницы между ANSI и UTF8 в таком случае нет никакой.

Kogrom 03.02.2006 09:08

Вложений: 1
Nox Noctis, я разгадал твою загадку :) Если в текстовом файле с UTF-8 кодировкой первые три байта следующие: EFh BBh BFh (п»ї в русской ANSI), то все нормально прочитается. Эти три байта можно добавить при сохранении стандартным блокнотом. Смотри прикрепленный файл.

Antares 03.02.2006 11:26

Когом, большое спасибо за решение этого вопроса!
Уходит в FAQ

Kogrom 03.02.2006 11:35

Прикол, связанный с этой темой!!! Откройте блокнотом текстовый файл с ANSI кодировкой и русскими буквами, введите в самое начало код п»ї , сохраните файл с ANSI кодировкой , закройте.

Теперь можно открыть этот файл хоть в блокноте, хоть флешкой с кодом от Nox Noctis с ссылкой на этот текстовый файл. И чудо - вместо русских букв нипойми чего! :) :) :)

Еще посмотрите на кодировку файла в блокноте. Разве с такой кодировкой вы сохраняли?

Nox Noctis 03.02.2006 12:02

Цитата:

Сообщение от Kogrom
Nox Noctis, я разгадал твою загадку :) Если в текстовом файле с UTF-8 кодировкой первые три байта следующие: EFh BBh BFh (п»ї в русской ANSI), то все нормально прочитается. Эти три байта можно добавить при сохранении стандартным блокнотом. Смотри прикрепленный файл.

сейчас я сделаю что-нибудь страшное.

насколько я вижу, в приаттаченном тобой файле, нет первых трех байт EFh BBh BFh. там стоит FFh FEh, что означает сигнатуру UTF8.

сигнатура у текстового файла, сохранённого в UTF8 может быть, а может и не быть. опционально. от наличия сигнатуры зависит восприятие документа некоторыми программами (которые сами определяют что за кодировку им дали) . но флэш к таким программам НЕ относится, потому что в зависимости от настройки useCodepage он либо воспринимает ВСЁ что загружает как юникод, либо воспринимает ВСЁ что загружает как ANSI.

обычно текстовые редакторы, позволяющие сохранять текст в юникоде, дают и возможность включать в файл сигнатуру или не включать.

и я не понимаю причины всеобщего ликования.
Цитата:

Прикол, связанный с этой темой!!! Откройте блокнотом текстовый файл с ANSI кодировкой и русскими буквами, введите в самое начало код п»ї , сохраните файл с ANSI кодировкой , закройте.
удивился, сделал, как и ожидалось - похерил юникодные символы, флэш ничего не читает...

либо я чего-то не понимаю, либо имеет место заговор. :)

Kogrom 03.02.2006 14:56

Nox Noctis, FFh FEh - сигнатура Юникода. Мой файл больше твоего исходного на 3 байта, а не на 2...

А вобще все может быть, просто у меня флешка читает текстовые файлы с русскими буквами и с ANSI и с UTF-8 кодировкой (с этой сигнатурой из трех символов). Ну, твой файл не читает, тут ты без сомнения прав.

Nox Noctis 03.02.2006 15:14

1. выложи, пожалуйста, исходник и два текстовых файла (ANSI и UTF), на которых ты проверяешь.

2. скажи какая у тебя операционная система, какая кодировка установлена локальной, и какая версия флэша.


меня немного запутал Ultraedit.
он как-то странно отображает сигнатуру UTF. поэтому я сказал: "насколько я вижу, в приаттаченном тобой файле, нет первых трех байт EFh BBh BFh. там стоит FFh FEh, что означает сигнатуру UTF8." на самом деле то, что ты привёл, и есть та самая сигнатура, тут ты прав.

Цитата:

Сообщение от Kogrom
Nox Noctis, FFh FEh - сигнатура Юникода. Мой файл больше твоего исходного на 3 байта, а не на 2...

да, естесственно, у меня файл в UTF8, но без сигнатуры. если добавить сигнатуру, получится ровно то же самое, что у тебя.
Цитата:

Сообщение от Kogrom
А вобще все может быть

нет, не может такого быть. :)

повторюсь,

при useCodepage = true
файлы в UTF8 с русскими символами не могут читаться. совершенно точно. чтоб я сдох. :)

при useCodepage = false
файлы в ANSI читаться не могут.

Kogrom 03.02.2006 16:26

Вложений: 1
Цитата:

1. выложи, пожалуйста, исходник и два текстовых файла (ANSI и UTF), на которых ты проверяешь.

2. скажи какая у тебя операционная система, какая кодировка установлена локальной, и какая версия флэша.
WINDOWS XP, 2000; windows-1251 (если я верно понял); Macromedia Flash MX (6); плееры 6,7,8 (на них тоже тестировал, не в trace конечно).

Архив с исходником и 3-я тесктовыми файлами (с твоим исходным)

Nox Noctis 03.02.2006 17:59

аха, спасибо.

ну что ж, признаю свою ошибку, я был уверен, что с сигнатурой или без, при useCodepage=true текст не должен читаться в UTF8 при некириллической кодировке в системе.

любопытная деталь. на макромедии об этом ни слова. :) сказано в точности то, что я писал постом выше.

кстати, в этом примере, который был опубликован в теме использованы файлы с сигнатурами :)

Цитата:

Так вот, если настройка system.useCodepage = true стоит, то файлы с UTF-8 кодировкой в России все равно нормально читаются. Вот мне интересно, нормально они читаются за границей или нет?
теперь можно ответить на этот вопрос: да, будут читаться. проверил при нерусской кодировке в системе.

Nox Noctis 03.02.2006 18:08

короче, юникод с сигнатурой - это железный вариант :)
при любых погодных условиях
(проверил при японской кодировке в системе :) )

Kogrom 03.02.2006 20:19

Спасибо большое.
Не ожидал что в этой теме будет что-то новое открыто :)

Nox Noctis 03.02.2006 20:25

Цитата:

Сообщение от Kogrom
Спасибо большое.
Не ожидал что в этой теме будет что-то новое открыто :)

тебе спасибо, что обратил внимание.

не то, чтобы это сильно "новое", но полезно знать, что юникод без сигнатуры может вызвать проблемы.

DafJam 07.02.2006 16:06

Спасибо! Работает! :)


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

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