Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/22: Рейтинг темы: голосов - 22, средняя оценка - 4.77
 Аватар для minibuilder
97 / 6 / 1
Регистрация: 15.04.2013
Сообщений: 40

Некорректное отображение данных клиентского приложения Flex

06.05.2013, 13:44. Показов 4326. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу клиент-серверное приложение под ios в Adobe Flash Builder 4.6 (тип приложения Flex).
На сервере установлен MySQL+php+apache
На сервере установлена кодировка utf8_general_ci
Проблема заключается в некорректном отображении данных: запись таблицы, созданная через phpmyadmin при попытке чтения во флексовском приложении отображается в виде
???????
- и это касается только кириллицы, цифры и латинские буквы отображаются нормально.
при попытке записи кириллических срок через приложение Flex'a в мою БД, в phpmyadmin данная запись пишется в виде
Сидоров
(цифры и латиница по-прежнему сохраняют свой нормальный вид), а когда я пытаюсь, опять же через клиента, прочитать только что созданную запись - то все отображается в первозданном виде. Значит, проблема заключается с кодировке запросов самого Flex'a.
Помогите, пожалуйста, с решением этой проблемы
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.05.2013, 13:44
Ответы с готовыми решениями:

Некорректное отображение данных
Через программу сделанную в Windows Forms добавляю данные в БД использую MySql. Добавляю какой-то текст на английском и он сохраняется в...

Отображение картинки на форме клиентского приложения из базы данных из поля OLE
ПРошу помочь начинающему. Есть клинское приложение связанное с базой данных в acceess. В базе данных есть поле ole там картинки. ...

Некорректное отображение приложения Win7
Доброго времени суток, уважаемые форумчане! Есть меллкософтное приложение, которым многие пользуются, написанное на D2009, почему-то у...

17
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
06.05.2013, 15:58
minibuilder, а шрифты в проект добавлены корректно? Каким образом происходит отображение данных?
1
 Аватар для minibuilder
97 / 6 / 1
Регистрация: 15.04.2013
Сообщений: 40
06.05.2013, 16:13  [ТС]
Каким образом происходит отображение данных?
вот ниже скрин:
1) как запись таблицы отображается в таблице через phpmyadmin
2) и как та же самая запись отображается в клиентском приложении

а шрифты в проект добавлены корректно?
а можно с этого места по-подробнее?
Миниатюры
Некорректное отображение данных клиентского приложения Flex  
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
06.05.2013, 16:41
Цитата Сообщение от minibuilder Посмотреть сообщение
utf8_general_ci
А это разве не способ сравнения символов?
Цитата Сообщение от minibuilder Посмотреть сообщение
вот ниже скрин
Все же указанной кодировки не видно.
Цитата Сообщение от minibuilder Посмотреть сообщение
и как та же самая запись отображается в клиентском приложении
Не стоит путать клиентское и серверное приложение. Прежде чем грешить на клиент, проверьте сервер.

Цитата Сообщение от minibuilder Посмотреть сообщение
можно с этого места по-подробнее?
Немножко можно. Для корректного отображения шрифта его (шрифт) необходимо внедрить (Embed). Это можно осуществить рядом способов. Для mxml наиболее востребованным является использование метатега embed.
0
 Аватар для minibuilder
97 / 6 / 1
Регистрация: 15.04.2013
Сообщений: 40
06.05.2013, 16:50  [ТС]
TanaTiX, теперь я запутался окончательно. опишите, пожалуйста, что и в каком порядке мне нужно сделать
0
 Аватар для minibuilder
97 / 6 / 1
Регистрация: 15.04.2013
Сообщений: 40
06.05.2013, 16:58  [ТС]
На скрине показал, что будет если попытаться сделать запись в таблицу с клиента, причем если потом обратно эту запись прочитать, то она будет выглядеть нормально
Миниатюры
Некорректное отображение данных клиентского приложения Flex  
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
06.05.2013, 17:14
minibuilder, теперь я запутался Глянуть бы... Минимальный пример, иллюстрирующий проблему...
1
 Аватар для minibuilder
97 / 6 / 1
Регистрация: 15.04.2013
Сообщений: 40
06.05.2013, 17:30  [ТС]
TanaTiX, как мне кажется, проблема заключается в какой-то не состыковке, при отправлении запросов.
клиент, отправляя запрос типа INSERT, походу представляет данные в своей кодировке, которые в таблице показываются кракозябликами.
Когда клиент посылает запрос типа SELECT, то используя свою же кодировку он спокойно может прочитать эти кракозяблики и показать нормальный текст.
по этой теме нашел вот такой вот код
PHP
1
2
3
4
5
$mysqli = mysqli_connect(путь, DATABASE_USERNAME, DATABASE_PASSWORD); 
        mysqli_query("SET NAMES 'utf8';"); 
         mysqli_query("SET CHARACTER SET 'utf8';"); 
         mysqli_query("SET SESSION collation_connection = 'utf8_general_ci';"); 
        mysqli_select_db(DATABASE_NAME);
но куда его вставить в класс пхп я вообще представления не имею, в пхп я не силен(
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
06.05.2013, 17:38
minibuilder, я правильно понял, что текст некорректно отображается только в phpMyAdmin-е? Все остальное работает корректно?
0
 Аватар для minibuilder
97 / 6 / 1
Регистрация: 15.04.2013
Сообщений: 40
06.05.2013, 17:47  [ТС]
TanaTiX, не только. Использую еще MySQL Administrator - там картина такая же, как и в phpmyadmin
Просто еще будет на серваке будет свое приложение (для администрирования системы - графики, отчеты и т.п.) и я так подозреваю, что при обращении к БД он будет показывать те же самые кракозяблики, если мы не исправим проблему с кодировкой
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
06.05.2013, 18:00
Цитата Сообщение от minibuilder Посмотреть сообщение
Использую еще MySQL Administrator - там картина такая же, как и в phpmyadmin
Т.е. проблема с отображением только на серверной части. Думаю стоит двигаться именно в этом направлении. Тему переношу в соответствующий раздел.
0
Почетный модератор
12274 / 5340 / 268
Регистрация: 05.04.2011
Сообщений: 14,086
Записей в блоге: 2
06.05.2013, 18:06
minibuilder, у Вас получается смена кодировки с UTF-8 на win1252

Создайте в корневом каталоге Вашего сайта (или приложения - что там лежит) файл .htaccess (если его еще нет) и пропишите в нем директиву

Code
1
AddDefaultCharset utf-8
2
 Аватар для minibuilder
97 / 6 / 1
Регистрация: 15.04.2013
Сообщений: 40
06.05.2013, 18:35  [ТС]
Taatshi, к сожалению, результат остался тем же.
0
Почетный модератор
12274 / 5340 / 268
Регистрация: 05.04.2011
Сообщений: 14,086
Записей в блоге: 2
06.05.2013, 18:38
Ну, тогда рассказывайте подробно. Где все лежит, какой хостинг, кто хостер
0
 Аватар для minibuilder
97 / 6 / 1
Регистрация: 15.04.2013
Сообщений: 40
06.05.2013, 20:19  [ТС]
сервер установлен на моей машине (wampserver 2.2: Apache 2.2.22, PHP 5.4.3, MySQL 5.5.24) с настроенным доступом по локальной сети.
клиентское приложение пишу в Adobe Flash Builder 4.6 (Мобильный проект Flex, устройство для тестирования iPod Touch 4G)
При создании приложение выбираю тип сервера приложения "PHP"
После создается в проекте новая служба типа PHP, где стандартными методами создается php класс
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
<?php
 
/**
 *  README for sample service
 *
 *  This generated sample service contains functions that illustrate typical service operations.
 *  Use these functions as a starting point for creating your own service implementation. Modify the 
 *  function signatures, references to the database, and implementation according to your needs. 
 *  Delete the functions that you do not use.
 *
 *  Save your changes and return to Flash Builder. In Flash Builder Data/Services View, refresh 
 *  the service. Then drag service operations onto user interface components in Design View. For 
 *  example, drag the getAllItems() operation onto a DataGrid.
 *  
 *  This code is for prototyping only.
 *  
 *  Authenticate the user prior to allowing them to call these methods. You can find more 
 *  information at http://www.adobe.com/go/flex_security
 *
 */
class EmplService {
 
    var $username = "root";
    var $password = "123qwe";
    var $server = "192.168.0.3";
    var $port = "3306";
    var $databasename = "test";
    var $tablename = "empl";
 
    var $connection;
 
    
    /**
     * The constructor initializes the connection to database. Everytime a request is 
     * received by Zend AMF, an instance of the service class is created and then the
     * requested method is invoked.
     */
    public function __construct() {
        $this->connection = mysqli_connect(
                                $this->server,  
                                $this->username,  
                                $this->password, 
                                $this->databasename,
                                $this->port
                            );
 
        $this->throwExceptionOnError($this->connection);
    }
 
    /**
     * Returns all the rows from the table.
     *
     * Add authroization or any logical checks for secure access to your data 
     *
     * @return array
     */
    public function getAllEmpl() {
 
        
        $stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename");        
        $this->throwExceptionOnError();
        
        mysqli_stmt_execute($stmt);
        $this->throwExceptionOnError();
        
        $rows = array();
        
        mysqli_stmt_bind_result($stmt, $row->EmplID, $row->FIO, $row->Addr, $row->Phone, $row->Dept, $row->TabNumb, $row->KlNumb, $row->Posit, $row->Login, $row->Pass);
        
        while (mysqli_stmt_fetch($stmt)) {
          $rows[] = $row;
          $row = new stdClass();
          mysqli_stmt_bind_result($stmt, $row->EmplID, $row->FIO, $row->Addr, $row->Phone, $row->Dept, $row->TabNumb, $row->KlNumb, $row->Posit, $row->Login, $row->Pass);
        }
        
        mysqli_stmt_free_result($stmt);
        mysqli_close($this->connection);
    
        return $rows;
    }
 
    /**
     * Returns the item corresponding to the value specified for the primary key.
     *
     * Add authorization or any logical checks for secure access to your data 
     *
     * 
     * @return stdClass
     */
    public function getEmplByID($itemID) {
        
        $stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename where EmplID=?");
        $this->throwExceptionOnError();
        
        mysqli_stmt_bind_param($stmt, 'i', $itemID);        
        $this->throwExceptionOnError();
        
        mysqli_stmt_execute($stmt);
        $this->throwExceptionOnError();
        
        mysqli_stmt_bind_result($stmt, $row->EmplID, $row->FIO, $row->Addr, $row->Phone, $row->Dept, $row->TabNumb, $row->KlNumb, $row->Posit, $row->Login, $row->Pass);
        
        if(mysqli_stmt_fetch($stmt)) {
          return $row;
        } else {
          return null;
        }
    }
 
    /**
     * Returns the item corresponding to the value specified for the primary key.
     *
     * Add authorization or any logical checks for secure access to your data 
     *
     * 
     * @return stdClass
     */
    public function createEmpl($item) {
 
        $stmt = mysqli_prepare($this->connection, "INSERT INTO $this->tablename (FIO, Addr, Phone, Dept, TabNumb, KlNumb, Posit, Login, Pass) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
        $this->throwExceptionOnError();
 
        mysqli_stmt_bind_param($stmt, 'ssiiiisss', $item->FIO, $item->Addr, $item->Phone, $item->Dept, $item->TabNumb, $item->KlNumb, $item->Posit, $item->Login, $item->Pass);
        $this->throwExceptionOnError();
 
        mysqli_stmt_execute($stmt);     
        $this->throwExceptionOnError();
 
        $autoid = mysqli_stmt_insert_id($stmt);
 
        mysqli_stmt_free_result($stmt);     
        mysqli_close($this->connection);
 
        return $autoid;
    }
 
    /**
     * Updates the passed item in the table.
     *
     * Add authorization or any logical checks for secure access to your data 
     *
     * @param stdClass $item
     * @return void
     */
    public function updateEmpl($item) {
    
        $stmt = mysqli_prepare($this->connection, "UPDATE $this->tablename SET FIO=?, Addr=?, Phone=?, Dept=?, TabNumb=?, KlNumb=?, Posit=?, Login=?, Pass=? WHERE EmplID=?");      
        $this->throwExceptionOnError();
        
        mysqli_stmt_bind_param($stmt, 'ssiiiisssi', $item->FIO, $item->Addr, $item->Phone, $item->Dept, $item->TabNumb, $item->KlNumb, $item->Posit, $item->Login, $item->Pass, $item->EmplID);     
        $this->throwExceptionOnError();
 
        mysqli_stmt_execute($stmt);     
        $this->throwExceptionOnError();
        
        mysqli_stmt_free_result($stmt);     
        mysqli_close($this->connection);
    }
 
    /**
     * Deletes the item corresponding to the passed primary key value from 
     * the table.
     *
     * Add authorization or any logical checks for secure access to your data 
     *
     * 
     * @return void
     */
    public function deleteEmpl($itemID) {
                
        $stmt = mysqli_prepare($this->connection, "DELETE FROM $this->tablename WHERE EmplID = ?");
        $this->throwExceptionOnError();
        
        mysqli_stmt_bind_param($stmt, 'i', $itemID);
        mysqli_stmt_execute($stmt);
        $this->throwExceptionOnError();
        
        mysqli_stmt_free_result($stmt);     
        mysqli_close($this->connection);
    }
 
 
    /**
     * Returns the number of rows in the table.
     *
     * Add authorization or any logical checks for secure access to your data 
     *
     * 
     */
    public function count() {
        $stmt = mysqli_prepare($this->connection, "SELECT COUNT(*) AS COUNT FROM $this->tablename");
        $this->throwExceptionOnError();
 
        mysqli_stmt_execute($stmt);
        $this->throwExceptionOnError();
        
        mysqli_stmt_bind_result($stmt, $rec_count);
        $this->throwExceptionOnError();
        
        mysqli_stmt_fetch($stmt);
        $this->throwExceptionOnError();
        
        mysqli_stmt_free_result($stmt);
        mysqli_close($this->connection);
        
        return $rec_count;
    }
 
 
    /**
     * Returns $numItems rows starting from the $startIndex row from the 
     * table.
     *
     * Add authorization or any logical checks for secure access to your data 
     *
     * 
     * 
     * @return array
     */
    public function getEmpl_paged($startIndex, $numItems) {
        
        $stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename LIMIT ?, ?");
        $this->throwExceptionOnError();
        
        mysqli_stmt_bind_param($stmt, 'ii', $startIndex, $numItems);
        mysqli_stmt_execute($stmt);
        $this->throwExceptionOnError();
        
        $rows = array();
        
        mysqli_stmt_bind_result($stmt, $row->EmplID, $row->FIO, $row->Addr, $row->Phone, $row->Dept, $row->TabNumb, $row->KlNumb, $row->Posit, $row->Login, $row->Pass);
        
        while (mysqli_stmt_fetch($stmt)) {
          $rows[] = $row;
          $row = new stdClass();
          mysqli_stmt_bind_result($stmt, $row->EmplID, $row->FIO, $row->Addr, $row->Phone, $row->Dept, $row->TabNumb, $row->KlNumb, $row->Posit, $row->Login, $row->Pass);
        }
        
        mysqli_stmt_free_result($stmt);     
        mysqli_close($this->connection);
        
        return $rows;
    }
    
    
    /**
     * Utility function to throw an exception if an error occurs 
     * while running a mysql command.
     */
    private function throwExceptionOnError($link = null) {
        if($link == null) {
            $link = $this->connection;
        }
        if(mysqli_error($link)) {
            $msg = mysqli_errno($link) . ": " . mysqli_error($link);
            throw new Exception('MySQL Error - '. $msg);
        }       
    }
}
 
?>
а дальше уже идет автоматизированная работа по использованию класса

Добавлено через 1 час 10 минут
многие советуют добавать
PHP
1
mysql_query('SET NAMES utf8');
сразу после установки соединения, но я не силен в пхп, поэтому не знаю, куда это нужно вставлять и поможет ли это вообще
0
 Аватар для aleksandroparin
8 / 8 / 2
Регистрация: 19.02.2013
Сообщений: 23
07.05.2013, 02:14
Я не уверен, но, и как бы глупо это не звучало, у меня была подобная проблема... оказалось, что из flesh кириллица приходит в кодировке win1251. Попробуй конвертировать те строки, что приходят из flesh из win1251 в utf-8. Для этого в php файле для каждой пришедшей строки написать следующее $string = mb_convert_encoding($string, "windows-1251", "utf-8"); где $string - это переменная содержащая строку, пришедшую из flash. В твоём случае наверное будет выглядеть так: в функциях createEmpl и updateEmpl перед mysqli_stmt_bind_param для каждого $item->'имя' пропиши $item->'имя' = mb_convert_encoding($item->'имя', "windows-1251", "utf-8");
1
 Аватар для minibuilder
97 / 6 / 1
Регистрация: 15.04.2013
Сообщений: 40
08.05.2013, 01:25  [ТС]
aleksandroparin, идея очень хорошая, у меня уже что-то получается - правда кракозяблики есть, но уже другие. буду уже двигаться в этом направлении
0
 Аватар для aleksandroparin
8 / 8 / 2
Регистрация: 19.02.2013
Сообщений: 23
09.05.2013, 04:51
Погоди... я вспомнил кое-что...тогда у меня кракозябли были из-за того, что я файлы с компа загружал на сервак.. на серваке utf-8, а на компе всё в win1251... поэтому мне и пришлось перекодировку сделать, а у тебя, как я вижу, данные вводятся в самой флешке, поэтому mb_convert_encoding может и не помочь. Я перечитал все ответы, которые тебе присылали и не заметил ни одного, где бы тебе советовали проверить кодировку самого текстового файлика php. Посмотри в редакторе.. Если на сервере utf-8, то и все файлы php должны быть в utf8, подпись unicod BOM выключена, и иметь форму приведения к UNICODE "С"(каноническая декомпозиция и последующая каноническая композиция). Её можно проверить и поменять в текстовом редакторе в котором php код пишешь. У меня в DreamWeaver настройки кодировки страницы можно найти в меню Изменить->Свойства страницы->название/кодировка... Сам про неё постоянно забываю)))

Добавлено через 2 минуты
Само-собой, если кодировка самого php файла была не правильной, то убирай mb_convert_encoding, а то опять кракозябли вылезут
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2013, 04:51
Помогаю со студенческими работами здесь

Связь клиентского приложения с базой данных в интернете
Есть клиентское приложение связанное с базой данных в Аксес. нужно чтобы база данных располагалась в интернете а клиентское приложение...

Некорректное отображение приложения в Graphic Layout и на телефоне
Должно быть : Добавлено через 9 минут На эмуляторе все корректно отбражается на телефоне показывается только кусок приложения ...

Некорректное отображение данных в stringgrid
Здравствуйте. Строю в Делфи график и при этом вывожу значения x и y в таблицу. В итоге данные как бы &quot;сдвинуты&quot;, что-то такое....

Некорректное отображение данных в консоли!
Есть кодик. namespace LearningProject { public class Money { public decimal Amount { get; set; } public...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru