O "ÿþ" pode ser uma marca de ordem de bytes Unicode (BOM) e o ^ @ pode ser o primeiro byte de cada caractere Unicode de 16 bits.
Use recode ou iconv para convertê-lo de UTF-16 para ASCII.
Eu tenho um arquivo CSV bastante grande (~ 700MB) que eu sei consistir em linhas de hashes alfanuméricos de 27 caracteres; sem vírgulas ou qualquer coisa extravagante. De alguma forma, durante a migração do Windows para o Linux (via winSCP e alguns SCPs comuns), ele foi convertido em algum tipo de formato binário com o qual não estou familiarizado.
Se eu abrir o arquivo no vi, tudo parece bem, e ele diz [convertido] na parte inferior, embora eu saiba que não é um problema de término de linha (e o dos2unix não ajuda). Se eu 'cabeça' o arquivo, parece adequado, exceto por um "ÿþ" no início da primeira linha. Se eu abrir o arquivo no nano, no entanto, vejo o "ÿþ" no início e depois "^ @" antes de cada caractere (até mesmo novas linhas e EoF).
Se eu tentar salvar novamente ou copiar o arquivo (por exemplo: head file.csv > short.txt), essa codificação especial será preservada. Copiei as primeiras dez linhas do vi (que o exibe corretamente) para a área de transferência do Windows por meio do meu cliente SSH e colei-o em um novo arquivo de texto, test.txt. Este arquivo é visualmente idêntico quando aberto no vi (e similar através de 'head', menos o "ÿþ"), embora seja aproximadamente a metade do tamanho do arquivo. Além disso,
file test.txt
test.txt: ASCII text
file short.txt
short.txt:
Eu não tenho idéia do formato para o qual esse arquivo de texto foi convertido (é notoriamente difícil pesquisar na Internet por símbolos), mas certamente deve haver alguma maneira de convertê-lo de volta. Alguma idéia?