Просмотр полной версии : Flex и кодировка текста
Проблема в следующем:
Есть код, поражающий своей оригинальностью.
<mx:ComboBox id="cameras" dataProvider="{new ArrayCollection(Camera.names)}"
Как несложно догадаться - это просто комбобокс, реализующий просмотр списка подключенных камер и выбор из них нужной.
Проблемы начинаются, когда в названии камеры встречаются кириллические символы.
Естественно, Flex и его UTF-8 не могут нормально отобразить имена, предоставляемые Окном и его у***ской cp1251.
Просьба:
Может кто подсказать способ перекодировки имен камер не отправляя их на сервер(смена кодировки проекта - к сожалению не вариант)?
Проверить Capabilities.language и попробовать угадать... Или предложить пользователю самому указать язык - ИМО последнее, самое оптимальное.
Боюсь, что либо я не понял ответа, либо вы не поняли вопроса.
Мне все равно какой язык стоит у пользователя.
Просто на Windows все имена камер приходят в cp1251. Что мне нужно - так это способ перекодировки из cp1251 в utf8 без использования сервера.
Как бы это еще сказать... если вы не знаете какой язык установлен в системе пользователя, вы не сможете узнать как сконвертировать этот текст в UTF-8. Текст в cp1251 ничем не отличается от текста в cp1255, например, только если у вас в системе указано использовать кирилицу для отображения дополнительных символов, то если набраный текст был тоже кирилличным - вы его увидите, более или менее, а если это был какой-то другой, то увидите опять же кириличные буквы, только смысла в них никакого не будет.
DАSOLTER
19.02.2010, 21:29
Проверить Capabilities.language и попробовать угадать... Или предложить пользователю самому указать язык - ИМО последнее, самое оптимальное.
да, да, кстати,насчет "угадать"? Я тоже сталкивался с этим, но с проблемой угадать все решалось за счет конкретного источника геммороя...)) А есть ли в действительно хитро***выдуманные способы этой проблемы? ;) Жду ответа, прищурись.
Добавлено через 4 минуты
не успел :) К сожалению, это true (
Перекодировка из 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");
}
Благодарю за внимание, разобрался.
GrMerlin
23.02.2010, 15:47
А не подскажете, как эту функцию применить к ArrayCollection? Желательно в виде примера. Допустим, есть поля "имя" и "фамилия"...
bastrakov
26.02.2010, 10:17
пробегитесь циклом по всем записям.
выше вам дело говорят. вы уверены, что у вас только кодировка 1251? во
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.