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
.