Форум: "Прочее";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
ВнизЮникод в базовых функциях Windows Найти похожие ветки
← →
Trible (2007-01-27 12:24) [0]
> Все базовые функции для создания окон, вывода текста,
> операций со строками и т. д. ожидают передачи
> Unicode-строк (начиная с win 2000). Если какой-то функции
> Windows передается ANSI-строка, она сначала преобразуется
> в Unicode и лишь потом передается операционной системе.
> Если Вы ждете результата функции в виде ANSI-строки, операционная
> система преобразует строку — перед возвратом в приложение
> - из Unicode в ANSI. Все эти преобразования протекают скрытно
> от Вас, но, конечно, на них тратятся и лишнее время, и лишняя
> намять. Рихтер.
Если это действительно так, тогда я не пойму зачем это делать для всех базовых функций?? Ведь например для создания окна нужен английский язык.
Или я буду класс окна писать на арабском??
Что думают опытные?
← →
palva © (2007-01-27 13:36) [1]А что такое базовые функции? Функции Windows API, с которыми работает приложение юникода не требуют. Вернее, там где есть символьные параметры имеются два варианта функции: ANSI и UNICODE.
← →
Zeqfreed © (2007-01-27 13:41) [2]Внутреннее представление всех строк — в юникоде. Другое дело, что если они хранятся в форме UTF-8, то на размер и производительность для английского алфавита это не влияет.
← →
Psychedelic © (2007-01-27 13:44) [3]
> Функции Windows API, с которыми работает приложение юникода
> не требуют.
Не требуют, но
> В Windows 2000 функция CreateWindowExA и другие базовые
> — просто шлюз (транслятор), который выделяет память для
> преобразования строк из ANSI в Unicode и вызывает CreateWindowExW,
> передавая ей преобразованные строки. Когда CreateWindowExW
> вернет управление, CrealeWindowExA освободит буферы и передаст
> Вам описатель окна.
Рихтер. :)
← →
SRG* (2007-01-27 22:23) [4]Это что ж теперь хошь не хошь на юникод переходить??
Да уж , стратегия у MS
← →
колхоз глазами хакера (2007-01-27 23:01) [5]Ага... В 2007 году узнал, что с 2000 года МС на юникод перетаскивает и огорчился...
← →
Gero © (2007-01-27 23:10) [6]> [4] SRG* (27.01.07 22:23)
> Это что ж теперь хошь не хошь на юникод переходить??
Нет, не хочешь — не переходи.
← →
wl © (2007-01-27 23:15) [7]зря вы так про юникод... не для всех алфавитов хватает 256 символов (например, в японском). И то, что винда с ним работает, реально облегчает положение, когда приходится эти иероглифы на экран выводить, да и вообще с ними работать.
← →
колхоз глазами хакера (2007-01-27 23:17) [8]что именно "зря мы"?
← →
wl © (2007-01-27 23:20) [9]кстати вопрос в догонку, кто-нибудь знает нормальный, адекватный, онлайн (или оффлайн) переводчик с китайского?
пока что пользуюсь бетой переводчика гугл
http://translate.google.com/translate_t
перевод длинных(и не очень, к примеру, "Выход" по-китайски переводит как "From") предложений сильно смахивает на то, как переводит промт.
http://babelfish.altavista.com/ - ваще непонятно что, и к тому же пихают рекламу при переводе любого предложения.
← →
Zeqfreed © (2007-01-28 01:08) [10]Кажется, гугл за свой переводчик с китайского (или на?) получил какую-то награду, так что я не думаю, что есть что-то более достойное.
← →
Gero © (2007-01-28 02:33) [11]> [9] wl © (27.01.07 23:20)
> адекватный
А, это запросто, в Китае их — куча.
← →
SRG* (2007-01-29 14:42) [12]А что можно почитать полезного, потипу Рихтера?
← →
Игорь Шевченко © (2007-01-29 14:54) [13]
> Если это действительно так, тогда я не пойму зачем это делать
> для всех базовых функций?? Ведь например для создания окна
> нужен английский язык.
почему именно английский ?
← →
Gero © (2007-01-29 14:56) [14]> [12] SRG* (29.01.07 14:42)
Рихтера.
← →
Psychedelic © (2007-01-29 16:20) [15]
> почему именно английский ?
Ну я думаю вы поняли что автор имел ввиду не техническую проблему.
В 99.9% испольуют английский, а вы Игорь - используюте русский в указании класса окна?
← →
clickmaker © (2007-01-29 16:28) [16]ну мне кажется, должна быть возможность класс окна написать на родном языке. На случай острого приступа патриотизма
← →
Игорь Шевченко © (2007-01-29 17:43) [17]Psychedelic © (29.01.07 16:20) [15]
Я сильно извиняюсь, но CreateWindow(Ex)W подразумевает, что не только класс окна может быть на родном языке, но и параметры в сообщениях будут тоже передавать с учетом Unicode. То есть, в окно, созданное CreateWindow(Ex)A текст нельзя будет вывести на языке, для которого не предусмотрена однобайтная кодировка. (И в его дочерние окна тоже...)
← →
atruhin © (2007-01-29 17:51) [18]> [1] palva © (27.01.07 13:36)
> А что такое базовые функции? Функции Windows API, с которыми работает приложение юникода не требуют.
Может я не правильно понял, но основная масса функций работает с юникоде.
Когда то давно тестировал алгоритм поиска строки, замена AnsiUpperCase на самописную функцию,
обеспечило прирост скорости на несколько порядков!
Анализ AnsiUpperCase показал, что она работает по следующему алгоритму:
1. Вычисляет длинну строки;
2. Запрашивает блок памяти в 2 раза больше длинны строки;
3. Переводит строку в юникоде.
4. Запрашивает текущую локаль.
5. Производит преобразование юникоде строки;
6. Конвртирует в ansi
7. Освобождает выделенный буфер.
Хотя все это давно и хорошо документированно.
← →
Psychedelic © (2007-01-29 19:45) [19]
> Я сильно извиняюсь, но CreateWindow(Ex)W подразумевает,
> что не только класс окна может быть на родном языке, но
> и параметры в сообщениях будут тоже передавать с учетом
> Unicode. То есть, в окно, созданное CreateWindow(Ex)A текст
> нельзя будет вывести на языке, для которого не предусмотрена
> однобайтная кодировка. (И в его дочерние окна тоже...)
Я также весьма энергично извиняюсь, но :)
да неужели?
Т.е. если я создам окно с CreateWindow(Ex)A, то я не смогу вывести юникод текст? Я правильно вас понял? Вы точно в этом уверены?
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.04 c