PDA

Просмотр полной версии : Flex и кодировка текста


Saulot
19.02.2010, 19:17
Проблема в следующем:
Есть код, поражающий своей оригинальностью.
<mx:ComboBox id="cameras" dataProvider="{new ArrayCollection(Camera.names)}"
Как несложно догадаться - это просто комбобокс, реализующий просмотр списка подключенных камер и выбор из них нужной.
Проблемы начинаются, когда в названии камеры встречаются кириллические символы.
Естественно, Flex и его UTF-8 не могут нормально отобразить имена, предоставляемые Окном и его у***ской cp1251.
Просьба:
Может кто подсказать способ перекодировки имен камер не отправляя их на сервер(смена кодировки проекта - к сожалению не вариант)?

wvxvw
19.02.2010, 19:44
Проверить Capabilities.language и попробовать угадать... Или предложить пользователю самому указать язык - ИМО последнее, самое оптимальное.

Saulot
19.02.2010, 20:21
Боюсь, что либо я не понял ответа, либо вы не поняли вопроса.
Мне все равно какой язык стоит у пользователя.
Просто на Windows все имена камер приходят в cp1251. Что мне нужно - так это способ перекодировки из cp1251 в utf8 без использования сервера.

wvxvw
19.02.2010, 21:24
Как бы это еще сказать... если вы не знаете какой язык установлен в системе пользователя, вы не сможете узнать как сконвертировать этот текст в UTF-8. Текст в cp1251 ничем не отличается от текста в cp1255, например, только если у вас в системе указано использовать кирилицу для отображения дополнительных символов, то если набраный текст был тоже кирилличным - вы его увидите, более или менее, а если это был какой-то другой, то увидите опять же кириличные буквы, только смысла в них никакого не будет.

DАSOLTER
19.02.2010, 21:29
Проверить Capabilities.language и попробовать угадать... Или предложить пользователю самому указать язык - ИМО последнее, самое оптимальное.
да, да, кстати,насчет "угадать"? Я тоже сталкивался с этим, но с проблемой угадать все решалось за счет конкретного источника геммороя...)) А есть ли в действительно хитро***выдуманные способы этой проблемы? ;) Жду ответа, прищурись.

Добавлено через 4 минуты
не успел :) К сожалению, это true (

BeDLiNt
20.02.2010, 12:44
Перекодировка из windows-1251 в UTF-8:
private function win2utf8(data:String):String
{
var b:ByteArray = new ByteArray();

for (var i:uint = 0; i < data.length; i++)
b[i] = data.charCodeAt(i);
return b.readMultiByte(b.bytesAvailable, "windows-1251");
}

Saulot
22.02.2010, 11:21
Благодарю за внимание, разобрался.

GrMerlin
23.02.2010, 15:47
А не подскажете, как эту функцию применить к ArrayCollection? Желательно в виде примера. Допустим, есть поля "имя" и "фамилия"...

bastrakov
26.02.2010, 10:17
пробегитесь циклом по всем записям.
выше вам дело говорят. вы уверены, что у вас только кодировка 1251? во