Anonymous | Login | Signup for a new account | 24-11-24 00:15 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0002883 | SAS.Планета | [All Projects] Хотелка | public | 30-10-2015 14:15 | 04-11-2015 08:50 | ||||
Reporter | vdemidov | ||||||||
Assigned To | zed | ||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | 151010 | ||||||||
Target Version | 151111 | Fixed in Version | 151111 | ||||||
Summary | 0002883: Проблемы с юникодом при обработке событий WMCopyData | ||||||||
Description | Сейчас данные переданные через WMCopyData трактуются как AnsiString. Но там могут быть имена файлов для импорта, а также имя и описание метки для вставки в базу. А это совсем не обязательно AnsiString. Предлагаю при получении проверять BOM так же как и при открытии текстовых файлов. | ||||||||
Tags | юникод | ||||||||
Attached Files | |||||||||
Notes | |
(0016669) zed (manager) 30-10-2015 14:31 |
Не нравится мне этот BOM. Он может и удобен с точки зрения доработки SAS, но вот в использовании он не удобен. Что мешает добавить ключ --utf8 при передаче параметров? Тем более, что это же влияет и на обработку параметров командной строки. Или там предлагаешь оставить ansi? |
(0016670) vdemidov (manager) 30-10-2015 14:34 |
В юникодной версии параметры командной строки и так уже юникодные, или я не прав? Можно и ключ добавить. Я как-то не догадался. Это будет удобнее. |
(0016685) zed (manager) 02-11-2015 14:58 |
Добавил ключ и сделал обработку сообщений в UTF-8. |
(0016694) vdemidov (manager) 03-11-2015 08:51 |
Не, обработку этого ключа нужно делать на уровне TCmdLineArgProcessor, а наружу выставить максимум перегрузку метода Process принимающую AnsiString |
(0016696) zed (manager) 03-11-2015 10:09 |
Не, тот парсер работает со строками, так что там не получится. Конвертировать нужно до него. Я конечно могу перегрузить метод Process и написать там точно тот же код, что и сейчас в Main, только сути это особо не изменит. Согласен, что простой Pos я зря заюзал, надо более аккуратно искать ключик в строке, например адаптировать FindCmdLineSwitch для ансишных строк или взять её из Alcinoe, если оно там есть. |
(0016700) vdemidov (manager) 03-11-2015 10:52 |
А что мешает. Utf-8 прекрасно без потерь конвертируется в строку. Скармливаем все что пришло парсеру. Проверяем ключ utf-8. Если он есть, то все ключи в которых могут быть юникодные символы (названия меток, имена файлов) перед использованием прогоняем через декодер utf-8. Опять же вся логика прячется в парсере и не отсвечивает наружу. |
(0016702) zed (manager) 03-11-2015 10:57 |
>Utf-8 прекрасно без потерь конвертируется в строку. Точно? Это всё же перекодировка и она будет использовать текущую локаль. |
(0016703) vdemidov (manager) 03-11-2015 11:01 |
>>Utf-8 прекрасно без потерь конвертируется в строку. >Точно? Это всё же перекодировка и она будет использовать текущую локаль. Не точно, нужно проверить. Но даже если нет, то для этого можно сделать перегруженную версию Process для AnsiString и там преобразовывать без потерь. |
(0016704) zed (manager) 03-11-2015 11:03 |
>и там преобразовывать без потерь Как? |
(0016705) vdemidov (manager) 03-11-2015 11:12 |
>>и там преобразовывать без потерь >Как? Ладно, нужно подумать, но в любом случае это не в главной форме надо делать, а где-то уже в парсере. |
(0016706) vdemidov (manager) 03-11-2015 11:14 |
А, понял. Преобразование AnsiString -> WideString -> AnsiString должно быть тождественным для любой строки. Utf-8 ничуть не хуже любой другой. |
(0016707) vdemidov (manager) 03-11-2015 11:16 |
Так что просто конвертим в String, обрабатываем как нам нравится. Если нужно получить строку с возможным наличием юникода и взведен флаг Utf-8, то конвертим в AnsiString и вызываем UTF8DEcode |
(0016714) vdemidov (manager) 03-11-2015 19:39 |
Теперь будет проблема с символами не из основной локали при передаче их параметрами в юникодную версию через командную строку |
(0016715) zed (manager) 03-11-2015 19:41 |
Нет, параметры командной строки обрабатываются перегруженной функцией. |
(0016716) vdemidov (manager) 03-11-2015 19:47 |
Ой. Точно. Прогнал. |
Users who viewed this issue | |
User List | Anonymous (3049x), vdemidov (36x), zed (20x) |
Total Views | 3105 |
Last View | 24-11-2024 00:15 |
Issue History | |||
Date Modified | Username | Field | Change |
30-10-2015 14:15 | vdemidov | New Issue | |
30-10-2015 14:16 | vdemidov | Status | new => confirmed |
30-10-2015 14:16 | vdemidov | Tag Attached: юникод | |
30-10-2015 14:18 | vdemidov | Relationship added | child of 0002166 |
30-10-2015 14:31 | zed | Note Added: 0016669 | |
30-10-2015 14:34 | vdemidov | Note Added: 0016670 | |
02-11-2015 14:58 | zed | Note Added: 0016685 | |
02-11-2015 14:58 | zed | Status | confirmed => resolved |
02-11-2015 14:58 | zed | Fixed in Version | => 151111 |
02-11-2015 14:58 | zed | Resolution | open => fixed |
02-11-2015 14:58 | zed | Assigned To | => zed |
03-11-2015 08:51 | vdemidov | Note Added: 0016694 | |
03-11-2015 08:51 | vdemidov | Assigned To | zed => |
03-11-2015 08:51 | vdemidov | Status | resolved => confirmed |
03-11-2015 08:55 | vdemidov | Resolution | fixed => reopened |
03-11-2015 10:09 | zed | Note Added: 0016696 | |
03-11-2015 10:52 | vdemidov | Note Added: 0016700 | |
03-11-2015 10:57 | zed | Note Added: 0016702 | |
03-11-2015 11:01 | vdemidov | Note Added: 0016703 | |
03-11-2015 11:03 | zed | Note Added: 0016704 | |
03-11-2015 11:12 | vdemidov | Note Added: 0016705 | |
03-11-2015 11:14 | vdemidov | Note Added: 0016706 | |
03-11-2015 11:16 | vdemidov | Note Added: 0016707 | |
03-11-2015 19:39 | vdemidov | Note Added: 0016714 | |
03-11-2015 19:41 | zed | Note Added: 0016715 | |
03-11-2015 19:47 | vdemidov | Note Added: 0016716 | |
04-11-2015 08:50 | vdemidov | Status | confirmed => resolved |
04-11-2015 08:50 | vdemidov | Resolution | reopened => fixed |
04-11-2015 08:50 | vdemidov | Assigned To | => zed |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |