UTF-8 [RESOLVIDO]

1. UTF-8 [RESOLVIDO]

Arthur Rodrigues Stilben
gugarthur

(usa Fedora)

Enviado em 25/03/2013 - 18:05h

Pessoal,

como faço para imprimir na tela o código UTF-8 de uma variável do tipo char?


  


2. Re: UTF-8 [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 25/03/2013 - 18:21h

Se o tipo da variável é char, você só vai conseguir guardar os primeiros 128 caracteres (de 0 a 127) do UTF-8, pois as posições seguintes (128 em diante) precisam de dois ou mais caracteres.

Para auxiliar com conjuntos de caracteres estendidos e representações com múltiplos bytes,as bibliotecas do C definem o tipo wchar_t (wide character) e sequências de caracteres com múltiplos bytes, bem como funções para converter de uma representação para a outra (por exemplo: wctomb() converte um widechar para uma sequência multibyte correspondente a um único símbolo, e mbstowcs() converte uma string de multibytes justapostos para uma string de widechars). Essas conversões podem ser afetadas pelas configurações de locales.

Seria melhor se você fosse mais específico com relação à sua dúvida. Como C e C++ são linguagens relativamente de baixo nível, essa parte de locales e múltiplas representações é razoavelmente complexa.


3. Re: UTF-8 [RESOLVIDO]

Arthur Rodrigues Stilben
gugarthur

(usa Fedora)

Enviado em 26/03/2013 - 09:36h

Bem, vou tentar reformular a pergunta: suponhamos que exista uma variável do tipo char carac que tem como valor o caracter 'A', cujo unicode é U+0041. Eu quero saber como eu poderia imprimir esse unicode na tela.


4. Re: UTF-8 [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 26/03/2013 - 11:13h

É só mandar imprimir como se fosse um inteiro.

printf("%d\n", 'A') 


Um caráter entre apóstrofos pode ser usado numa expressão inteira.

int i;

i='A'; /* i vale 65 (em máquinas que usem ASCII) */
i+=4;
printf("'%c' tem o valor %d\n", i, i); /* imprime "'E' tem o valor 69" */



5. Re: UTF-8 [RESOLVIDO]

Arthur Rodrigues Stilben
gugarthur

(usa Fedora)

Enviado em 29/03/2013 - 15:25h

Existe alguma formato em que eu possa imprimir um inteiro como hexadecimal (tipo, ao invés de imprimir '65', imprimir '41')?


6. Re: UTF-8 [RESOLVIDO]

Arthur Rodrigues Stilben
gugarthur

(usa Fedora)

Enviado em 01/04/2013 - 08:26h

Achei uma referência no próprio site do C++: http://www.cplusplus.com/reference/ios/hex/






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts