Nota: pedi ao OP para atualizar sua pergunta com saída para locale
Parece que você tem um problema de localidade, é possível ver quais são suas configurações de localidade atuais com locale
. Você provavelmente tem uma configuração de LC_*
que está causando a saída de make
em um formato que seu terminal não está reconhecendo. Se você tiver escolhido um conjunto de caracteres UTF8 e, em seguida, tiver um terminal que não esteja configurado para analisar cadeias UTF8 ou suportá-las, verá isso. Também nos mesmos termos, se você tiver uma localidade não-utf-8 e seu terminal estiver configurado para exibir utf-8, você também verá problemas semelhantes. Minitty suporta-os:
$ perl -le 'binmode(STDOUT, ":utf8"); print "\x{0e44}\x{0e45}\x{0e46}";'
ไๅๆ
Teste LC_ALL=C make
ou export LC_ALL=C && make
e veja se a saída do bloco desaparece.
Para responder à sua pergunta sobre a diferença em utf8 e ANSI, utf8 tem um conjunto de caracteres MUITO maior. Para resolver isso, o utf8 usa 2 bits para descrever seqüências de caracteres estendidos, onde conjuntos de caracteres como ISO-8859-2 usam apenas 1. No entanto, a menos que truques como o BOM são colocados no arquivo (que nem sempre é suportado) os programas que você usa não tem idéia das diferenças e, portanto, dependem das configurações definidas em locale
sobre como interpretar essas sequências. Para complicar estas questões, nem todas as aplicações suportam utf8. Mais detalhes sobre as especificidades da codificação, unicode e utf8 podem ser encontrados em Wikipedia . Se você precisar codificar seu texto em russo em unicode, as sequências unicode podem ser encontradas em Wikipedia também.
Se você usar caracteres estendidos em seu Makefile, certifique-se de que eles estejam em conformidade com a codificação na qual você pretende executá-los.