SoloCodigo
Informática en general => Dudas informáticas => Mensaje iniciado por: AnioN en Miércoles 14 de Febrero de 2007, 15:33
-
Hola, es una pregunta muy basica la que estoy haciendo pero no me queda clara. Busque en la wikipedia para ver las definiciones de los dos y no me queda clara la relacion que hay entre ellos. Lo que entendi es que UNICODE es una forma de codificar cada caracter con un numero e incluye todos los idiomas, pero ASCII, es mas reducido?
-
ASCII es mucho mas reducido, es apenas de 0 a 127. Por dar un ejemplo recien en el ASCII extendido (que varia segun la configuracion local) tenes la ñ (164) y Ñ (165).
Unicode es muchisimo mas poderoso, usa por lo general dos bytes en lugar de uno para cada caracter y contiene todos los caracteres ASCII con su mismo valor.
Un ejemplo cadena "HOLA" en decimal:
ASCII: 72 - 79 - 76 - 65
Unicode: 72 - 00 - 79 - 00 - 76 - 00 - 65 - 00
-
ahhh, ok. Ahora voy entendiendo como viene el tema. Muchas Gracias.
-
De nadas B)
-
otra duda me surgio...como se cual estoy utilizando?, o sea, quien lo determina y como?
-
otra duda me surgio...como se cual estoy utilizando?, o sea, quien lo determina y como?
Eso dependera del entorno ... en VC++ por ejemplo las cadenas por defecto son ASCII y tenes que anteponer una L (asi: L"HOLA") para que la cadena sea Unicode. Mientras que el Kernel de Windows (gama NT) y la NTDLL.dll usan cadenas Unicode, por eso la API de Windows provee generalmente dos funciones con nombres ligeramente diferentes si se pasan parametros de cadena:
FuncionA (ANSI)
FuncionW (Wide)
Un ejemplo es GetModuleFileName y este es su prototipo:
DWORD GetModuleFileName(HMODULE hModule, LPTSTR lpFilename, DWORD nSize);
Si estamos trabajando en Unicode (hay unos defines UNICODE e _UNICODE creo que eran) el tipo LPTSTR sera una cadena LPWSTR (Wide) y sino sera LPSTR (ANSI).