Внешний интерфейс в Actionscript 3 неправильно передает кириллицу - PullRequest
0 голосов
/ 16 апреля 2011

У меня есть flash (проект flex actionscript), который должен передавать данные в javascript кириллицей через внешний интерфейс. Тем не менее, данные получаются в конце JavaScript в ????? вместо реальных букв кириллицы

как это можно исправить, чтобы оно отображалось как кириллица?

         var url:URLRequest = new URLRequest("javascript:allInfo('ядене'); void(0);");
         navigateToURL(url, "_self");

А вот и функция JS

function allInfo(info){
   alert(info);
}

Может кто-нибудь подсказать, как решить проблему?

Ответы [ 3 ]

0 голосов
/ 04 мая 2011

У меня отлично работает именно так, как есть.Скомпилировано в Flash Builder 4.5 с использованием Flex 4.5 SDK для Flash Player 11, работающего в Firefox 4. Если у вас все еще есть проблемы, опубликуйте тестовый SWF-файл и полную HTML-страницу.

0 голосов
/ 02 мая 2014

Попробуйте преобразовать строку в UTF-8 перед отправкой.

// These may seem backwards, just remember it's a conversion situation.
function decode_utf8( s:String ):String {
  return decodeURIComponent( escape( s ) );
}

function encode_utf8( s:String ):String {
  return unescape( encodeURIComponent( s ) );
}
0 голосов
/ 02 мая 2011

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

Если вы хотите проверить это, вы можете просто сделать trace('ядене'), если в журнале консоли Flash вы видите странный символ, это кодировкаво время компиляции.Что касается того, как исправить, я не знаю компилятора достаточно, чтобы указать вам правильное направление.

Это также может быть проблема с кодировкой страницы, на которую вы передаете данные.Если ваш файл Flash скомпилирован в UTF-8, а ваша HTML-страница обслуживается с другой кодировкой, которая может объяснить вашу проблему.В этом случае просто убедитесь, что кодировка html и вашего флэш-файла одинакова.

В крайнем случае, что вы можете сделать, чтобы обойти большую часть ошибки ExternalInterface, это escape данные на Flashсторона и unescape это на стороне Javascript.Пример:

Вспышка:

var url:URLRequest = new URLRequest("javascript:allInfo('" + escape("ядене")  + "'); void(0);");
flash.net.navigateToURL(url, "_self");

Javascript:

function allInfo(txt) {
    alert("Test : " + unescape(txt));
}
...