Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Создания HTML файла с русскими буквами. (http://www.flasher.ru/forum/showthread.php?t=153208)

goodguy 30.03.2011 12:16

Создание HTML файла с русскими буквами.
 
Понадобилось создать сайт для одной фирмы торгующей автозапчастями. Сделал шаблон для джумлы. Планируется к каждому разделу меню привязать прайс лист, соответствующий группе номенклатуры из их 1С. Конфа в 1с закрытая, ничего изменить не могу, так что пришлось воспользоваться стандартными средствами создания прайс листов в формате commerceML.
А теперь ближе к делу. 1С выгружает все группы номенклатуры в одну кучу. Получается xml файл около 100 000 строк. Для разделения этого барахла по группам я написал AIR приложение, которое парсит XML файл, выбирает оттуда все нужное, и по каждому разделу формирует структуру HTML таблицы.

Все работает отлично, и в трейсе появляется правильная структура таблицы. Если ее оттуда скопировать, и вставить в пустую страницу, то в браузере отобразится именно такая таблица, как мне и нужна.
Но копировать из трейса, мягко говоря, не удобно, поэтому я написал код для записи сформированного файла на жесткий диск автоматически. Тут и начались проблемы.

Вот код, класса, который создает html:
Код AS3:

package  {
        import flash.filesystem.File;
        import flash.filesystem.FileMode;
        import flash.filesystem.FileStream;
 
        public class HTMLFormatter {
 
                private var TABLE_HEADER:String = '<table border="1">\n';
                private var TABLE_BOTTOM:String = '</table>';
                private var _totalString:String = TABLE_HEADER; // Это строка, которая будет содержать весь код таблицы
                public var title:String = "";
 
                public function addRow(...args):void { // этот код вызывается xml парсером, и как параметры передаются нужные реквизиты номенклатуры
                        var params:Array = args as Array;
                        _totalString += "<tr>";
                        for (var i:String in params) {
                                _totalString += "<td>" + params[i] + "</td> \n";
                        }       
                        _totalString += "</tr>";
                }
                public function closeTable():void {
                        _totalString += TABLE_BOTTOM;
                        // непосредственно запись файла на диск
                        var file:File = File.desktopDirectory.resolvePath(String(Math.random()) + "table_air.html");
                        if (file.exists) file.deleteFile();
                        var fileStream:FileStream = new FileStream();
                        fileStream.open(file, FileMode.WRITE);
                        fileStream.writeUTFBytes(_totalString);
                        fileStream.close();
                }
        }
}

Файл создается, и таблица отображается в браузере. Но вместо русских букв иероглифы.

Как можно задать строке нормальную кодировку?
Уже задолбался искать..

Добавлено через 22 минуты
Сам спросил - сам ответил.

Вместо
Код AS3:

writeUTFBytes()

заюзал метод:
Код AS3:

fileStream.writeMultiByte(_totalString, 'Windows-1251');



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

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