Como leio os caracteres ocultos de um arquivo de texto?

6

Eu criei um arquivo de texto de um aplicativo que desenvolvi.

Quando envio o arquivo de texto para uma validação do SISTEMA , eles (sistema de terceiros) informam que o arquivo é inválido e que o arquivo contém três caracteres no início do arquivo que não são permitidos também caracteres especiais não estão corretos .

Eles também dizem que eu preciso usar ISO 8859-1 ou PC850 .

Bem, estou usando o Notepad ++ , e não vejo nada disso! Qual é o melhor leitor de arquivos de texto para esse tipo de problema?

EutambémtenhoumMaceapenaspenseiqueeumelembravadeabrirem TextMate ... WOW! Agora eu sei do que eles estão falando!

Como posso ter o mesmo no Windows?

    
por balexandre 23.03.2010 / 12:35

3 respostas

3

Well, I'm using NotePad++ and I can't see that at all! What is the best text file reader for this kind of problems?

O problema é que um editor de texto "bom" deve ser capaz de carregar todas as codificações de texto de forma transparente - mesmo aquelas quebradas e estúpidas como UTF-8-plus-BOM - o que evitaria que você visse o problema. Claro, um bom editor de texto deve salvar o UTF-8 sem o BOM-falso, ou pelo menos lhe dar a opção de fazê-lo, mas você não saberá salvá-lo novamente se você não encontrar o falso BOM lá. .

A razão pela qual você vê os três bytes altos no início do arquivo no TextMate é porque o TextMate errou e adivinhou a codificação como Latin-1 em vez de UTF-8. Isso presumivelmente reproduz o comportamento do serviço que você está enviando para o qual não sabe sobre Unicode, mas não é realmente um recurso desejável em si. É também por isso que os æ s e ø s não foram lançados.

Se você quiser ver cada byte no arquivo explicitamente, o que você deseja não é realmente um editor de texto, mas um editor hexadecimal. Há muito por onde escolher, por exemplo. xvi32 no Windows.

E, então, corrija seu aplicativo para não produzir listas de peças falsas; eles não têm lugar em um arquivo UTF-8, de qualquer forma, não importa os problemas que isso causa para aplicativos não-Unicode. [Não sei em que o aplicativo está escrito, mas uma causa comum de BOMs indesejados é usar a codificação Encoding.UTF8 do .NET. Um new UTF8Encoding(false) seria preferível.]

Se o serviço para o qual você está enviando quer o UTF-8 ou alguma outra codificação, em qualquer caso, você precisará perguntar aos operadores desse serviço. Se eles já estão descrevendo os bytes altos para æ et al em seu arquivo como inerentemente 'inválidos', você pode estar enfrentando uma situação em que eles não suportam nenhum caractere não-ASCII, nesse caso você ' Teremos que considerar a transliteração de caracteres adequadamente para o idioma de destino, por exemplo. æ - > ae .

    
por 23.03.2010 / 14:52
4

Uma maneira fácil de ver esse tipo de coisa no Windows é usar o comando "type".

Eu faria algo assim:

type filename.txt | more
    
por 04.09.2012 / 16:59
1

Frhed vem à minha mente ... é uma ferramenta muito boa. E, como apontou Arjan, você está salvando o arquivo como documento codificado em UTF-8.

    
por 23.03.2010 / 12:59