Converter UTF-8 para ASCII em VB.NET

votos
2

Eu estou escrevendo um aplicativo de console, que lê e-mails de diferentes caixas de e-mail e processa através deles. E-mails são recebidos de vários sistemas automatizados. As mensagens de e-mail são registradas e / ou enviados para a frente.

O problema é que alguns e-mails são codificados em UTF-8 e no citado-imprimível que mexe-se caracteres especiais (sobretudo uma, O e A) codificada de transferência. Eu não encontrei qualquer solução para convertê-los em formato legível.

Por exemplo a na citada imprimível é = C3 = A4. Usando uma métodos de conversão normais, o resultado é å¤ (sem sentido).

Eu rasguei descaradamente esta tabela de conversão de exemplo a partir daqui: http://forums.sun.com/thread.jspa?threadID=5315363

ponto de código de char UTF-8 como Latina-1

Ä 11100100 11000011 10100100 = E4 = C3 A4 å¤ = \ u00C3 \ u00A4
å 11100101 11000011 10100101 = E5 = C3 A5 a ¥ = \ u00C3 \ u00A5
Ö 11110110 11000011 10110110 = F6 = C3 B6 ö = \ u00C3 \ u00B6

Ä 11000100 11000011 10000100 = C4 = C3 84 Ã? = \ U00C3 \ u0084
 11000101 11000011 10000101 = C5 = C3 85 A? = \ U00C3 \ u0085
Ö 11010110 11000011 10010110 = D6 = C3 96 Ã? = \ U00C3 \ u0096

Então, como faço para obter o codepoint real a partir de UTF-8 valor? Eu prefiro não usar qualquer bibliotecas externas. Além disso, eu tentei um casal já e eles falharam.

Publicado 20/02/2009 em 15:28
fonte usuário
Em outras línguas...                            


3 respostas

votos
6

Eu não estou completamente certo, mas isso pode fazer o truque:

Encoding.ASCII.GetString(Encoding.UTF8.GetBytes(yourString))

Eu não estou no meu computador agora, então não posso testá-lo, mas vou tentar mais tarde.

Respondeu 20/02/2009 em 15:32
fonte usuário

votos
0

A partir dos efeitos que você descreve, eu acho que você obtém os e-mails por connectiong diretamente para caixas de correio POP3? Se assim for, então você obtém os e-mails em sua matéria- forma ea maioria dessas mails provavelmente vai estar no formato MIME.

MIME ( Wikipedia tem uma boa visão geral) é um padrão bastante grande e complexo e implementação de um analisador MIME que lida de forma confiável todos os casos que você deseja ter coberto poderia muito bem levá-lo algumas semanas.

Eu, portanto, considerar o uso de uma biblioteca MIME thrid-party que faz o trabalho para você.

Respondeu 21/02/2009 em 01:47
fonte usuário

votos
0

Você precisa converter de UTF-8 para Latin1 - depois de fazer a conversão citados-imprimíveis.

http://msdn.microsoft.com/en-us/library/66sschk1.aspx parece promissor.

Respondeu 20/02/2009 em 15:32
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more