/ 11:41 / 2024-11-21 / чт /
главная | регистрация | вход тут может быть ваша РЕКЛАМА добро пожаловать посетитель
меню
3ds max [6]
blender [2]
paint.NET [1]
extensions [4]
programming [12]
photoshop [6]
разное [39]
софт [22]
для pc [10]
для сайта [18]
Депардье [3]
свой бизнес [8]
мусорка [8]
jpn [8]
РАБОТА на ДОМУ [11]
games [6]
best films [13]
кошачьи секреты [2]
добавления
[2016-06-29][programming]
NOP (753)
[2016-05-05][programming]
ASM c NULL9L (554)
[2016-03-04][софт]
MPlayer (839)
[2016-02-13][софт]
UC Browser (1693)
комментарии
календарь
«  март 2015  »
пнвтсрчтптсбвс
      1
2345678
9101112131415
16171819202122
23242526272829
3031
статистика
Рейтинг SIMPLETOP.NET
всего: 1
посетителей: 1
пользователей: 0


Счетчик тИЦ и PR

добавлять комментарии могут только зарегистрированные пользователи.
[ регистрация | вход ]
главная » 2015 » март » 3 » Кодировка в Windows
09:11
Кодировка в Windows

Windows Unicode/ASCII



Сам же по себе юникод - штука хоть и расистская, но весьма полезная.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — —

TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR и т. д.


Многие C++ программисты в Windows теряются при виде странных идентификаторов TCHAR, LPCTSTR. В этой статье я попытатюсь развеять все сомнения.

В общем, символ может быть представлен 1им или 2мя байтами. Предположим, что 1-байтовый символ это ANSI символ — все Английские символы представлены этой кодировкой. В то время как 2-байтовый символ это Юникод, который может представлять все языки мира.

Компилятор Visual C++ поддерживает char и wchar_t как родные типы данных для ANSI и Unicode символов, соответственно. Есть более конкретное определение Юникода, но предположим что операционная система Windows использует wchar_t для поддержки нескольких языков.
There is more to Unicode than 2-bytes character representation Windows uses. Microsoft Windows use UTF-16 character encoding.
Используйте обобщённые типы данных и имена для представления символов и строк, чтобы ваш C/C++ код не зависел от режима кодировки.

Например, вместо замены:
// before
char cResponse;
char sUsername[64];
// str* functions

// after
wchar_t cResponse;
wchar_t sUsername[64];
// wcs* functions
С целью поддержки многоязычности (Unicode) на вашем языке, вы можете просто написать код в обобщённом виде:
#include <TCHAR.H>// явное или неявное включение
TCHAR cResponse;
TCHAR sUsername[64];
// _tcs* functions
В настройках проекта (Configuration Properties). В разделе Общие » Набор Символов (General » Character Set) устанавливается кодировка используемая при компиляции.


Это означает следующее. Если проект был скомпилировн в Юникоде, то TCHAR будет преобразован в wchar_t. Если же проект был скомпилирован как ANSI / MBCS, то TCHAR будет преобразован в char. Вы можете использовать char и wchar_t в любое время и настройки проекта не повлияют на непосредственное использование этих ключевых слов.

Ссылки:
UTF-8
UTF-16
Using Generic Data Types
Windows Data Types for Strings

What are TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR (etc.)?
WinAPI: Being Unicode Friendly
definition of the UNICODE
std::string in C++ Builder and VC++ (Welcome to Windows Unicode/ASCII hell)
C++ Builder - c_str return wchar_t
UnicodeString to char* (Embarcadero C++ Builder 2010)
Boost Macro Reference
Бесплатный компилятор Borland C++
Unicode, UTF, ASCII, ANSI format differences
категория: programming | просмотров: 1172 | добавил: 4el | теги: Wide character, UTF-8, ASCII, Unicode | рейтинг: 0.0/0
всего комментариев: 0
поиск
полезные ссылки




разное
copyright © 2024 Хостинг от uCoz