Pergunta

Eu estou tentando analisar alguns RTF, que eu voltar a partir do servidor. Para a maioria de texto eu voltar esta multa funciona (e usando um controle RichTextBox irá fazer o trabalho), no entanto alguns dos RTF parece conter um adicional de "codificação" e alguns dos personagens corrompidos.

A string original é a seguinte (e contém alguns dos caracteres usados ??em polonês):

ąćęłńóśźż

A cadeia de RTF com caracteres hexadecimais codificado que é enviar olha para trás como este

{\lang1045\langfe1045\f16383 {\'b9\'e6\'ea\'b3{\f7 \'a8\'bd\'a8\'ae}\'9c\'9f\'bf}}

Estou tendo problemas decodificar o NÃO caracteres na string retornada, eles parecem estar representado por dois hex valoriza cada, enquanto o restante da cadeia é representada (como esperado) por valores hexadecimais individuais .

Usando um controle RichTextBox para "parse" os resultados RTF em texto corruptor (os dois personagens em questão são exibidos como quatro diferentes personagens indesejados).

Se eu iria codificar a string plain-me a hex usando o código esperado (1250, Latin 2, a página de códigos ANSI para lcid 1045) gostaria de obter o seguinte:

\'B9\'E6\'EA\'B3\'F1\'F3\'9C\'9F\'BF

Estou perdido a respeito de como eu pode decodificar corretamente o {\ f7 \ 'a8 \' bd \ 'a8 \' ae} parte da cadeia de caracteres retornada que deve corresponder a NÃO .

Note que não há nenhuma definição de fonte para \ f7 no cabeçalho RTF ea cadeia parece bem quando visto directamente sobre o significado servidor que os caracteres (se eles estão corrompidos) estão em algum lugar corrompido no conversão antes de enviar.

Não estou certo se o problema está no lado do servidor (como eu não tenho controle sobre isso), mas uma vez que o servidor é usado para um monte de trabalho de tradução i assumir que a string retornada é ok.

Eu fui passando as especificações RTF mas não consegue encontrar qualquer dica sobre este tipo de combinação de codificações.

Foi útil?

Solução

Eu não sei por que isso está acontecendo, mas o parece de codificação para ser GBK ( ou algo suficientemente semelhantes).

Talvez as tentativas servidor para fazer alguma correspondência "inteligente" para encontrar os personagens, ou codificação de caracteres padrão do servidor é GBK ou assim, e esses personagens (e somente aqueles) também ocorrem em GBK por isso prefere que.

Eu descobri, adicionando os códigos ofender sextavadas (A8 BD A8 AE) como bytes em um arquivo HTML simples, para que eu pudesse passar por codificações do meu navegador e ver se alguma coisa combinado:

<html><body>¨½¨®</body></html>

Para minha surpresa, meu navegador veio com "não" imediatamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top