Esta não é realmente uma questão de programação. Existe uma linha de comando ou ferramenta do Windows (Windows 7) para obter a codificação atual de um arquivo de texto? Claro que posso escrever um pequeno aplicativo C #, mas queria saber se já existe algo embutido.
206
Respostas:
Abra seu arquivo usando o Bloco de notas baunilha antigo comum que acompanha o Windows.
Ele mostrará a codificação do arquivo quando você clicar em " Salvar como ... ".
Ficará assim:
Qualquer que seja a codificação selecionada padrão, é a codificação atual para o arquivo.
Se for UTF-8, você pode alterá-lo para ANSI e clicar em salvar para alterar a codificação (ou vice-versa).
Percebo que existem muitos tipos diferentes de codificação, mas era tudo o que eu precisava quando fui informado que nossos arquivos de exportação estavam em UTF-8 e exigiam ANSI. Como uma exportação foi feita uma única vez, o Bloco de Notas foi adequado para mim.
FYI: Pelo meu entendimento, acho que " Unicode " (conforme listado no bloco de notas) é um nome impróprio para UTF-16.
Mais aqui na opção " Unicode " do bloco de notas : Windows 7 - UTF-8 e Unicdoe
fonte
A ferramenta de linha de comando (Linux) 'file' está disponível no Windows via GnuWin32:
http://gnuwin32.sourceforge.net/packages/file.htm
Se você possui o git instalado, ele está localizado em C: \ Arquivos de Programas \ git \ usr \ bin.
Exemplo:
fonte
file
comando no cygwin . Qualquer conjunto de ferramentas POSIX para Windows deve terfile
.Se você possui "git" ou "Cygwin" em sua máquina Windows, vá para a pasta em que seu arquivo está presente e execute o comando:
Isso fornecerá os detalhes de codificação de todos os arquivos nessa pasta.
fonte
file *
comandofile --mime-encoding
obter a codificação do arquivoOutra ferramenta que achei útil: https://archive.codeplex.com/?p=encodingchecker EXE pode ser encontrada aqui
fonte
Aqui está meu exemplo de como detectar a família Unicode de codificações de texto via BOM. A precisão desse método é baixa, pois esse método funciona apenas em arquivos de texto (especificamente arquivos Unicode) e o padrão é
ascii
quando nenhuma BOM está presente (como a maioria dos editores de texto, o padrão seriaUTF8
se você deseja corresponder ao ecossistema HTTP / Web )Atualização 2018 : Não recomendo mais esse método. Recomendo usar o arquivo.exe das ferramentas GIT ou * nix, conforme recomendado pelo @Sybren, e mostro como fazer isso via PowerShell em uma resposta posterior .
Recomendação: Isso pode funcionar razoavelmente bem, se as
dir
,ls
ouGet-ChildItem
apenas verifica conhecidos arquivos de texto, e quando você só está procurando "maus codificações" de uma lista conhecida de ferramentas. (ou seja, o SQL Management Studio assume como padrão o UTF16, que interrompeu o GIT auto-cr-lf para Windows, que foi o padrão por muitos anos.)fonte
Get-FileEncoding
parece não existir no meu sistema. É um cmdlet personalizado?Get-FileEncoding
no poshcode. Eu até revi o punycode de python e nodejs, mas esta versão pequena atinge 80/20 para o meu uso (mais como 99/1). Se você estiver hospedando arquivos de outras pessoas, sugiro que você use ofile
comando da resposta da Syben ( stackoverflow.com/a/34766140/195755 ) ou outro decodificador unicode com qualidade de produção.default
codificada (quando não há BOM). Para XML, JSON e JavaScript, o padrão é UTF8, mas sua milhagem pode variar.Eu escrevi a resposta # 4 (no momento da redação). Mas ultimamente eu tenho o git instalado em todos os meus computadores, então agora uso a solução da @ Sybren. Aqui está uma nova resposta que torna essa solução acessível a partir do PowerShell (sem colocar todo o git / usr / bin no PATH, o que é muito complicado para mim).
Adicione isto ao seu
profile.ps1
:E usado como:
file.exe --mime-encoding *
. Você deve incluir .exe no comando para que o alias do PS funcione.Mas se você não personalizar seu perfil do PowerShell.ps1, sugiro que comece com o meu: https://gist.github.com/yzorg/8215221/8e38fd722a3dfc526bbe4668d1f3b08eb7c08be0 e salve-o em
~\Documents\WindowsPowerShell
. É seguro usá-lo em um computador sem o git, mas gravará avisos quando o git não for encontrado.O .exe no comando também é como eu uso
C:\WINDOWS\system32\where.exe
no PowerShell; e muitos outros comandos da CLI do OS "ocultos por padrão" pelo PowerShell, * shrug *.fonte
file
como alias para file.exe em vez defile.exe
¯ \ _ (ツ) _ / ¯dir | where Size -lt 10000
vswhere.exe git
.where.exe
para diferenciá-lo dowhere
PS, que é um alias interno paraWhere-Object
. Exemplo:where.exe git*
vsls . | where Size -lt 10000
file.exe
classe estática vs .NET, que você pode precisar no mesmo script que está detectando a codificação. Exemplo:[File]::SetCreationTime("readme.md", [DateTime]::Now)
.Uma solução simples pode estar abrindo o arquivo no Firefox.
e a codificação de texto aparecerá na janela "Informações da página".
Nota: Se o arquivo não estiver no formato txt, renomeie-o para txt e tente novamente.
PS Para mais informações, consulte este artigo.
fonte
Instale o git (no Windows, você deve usar o git bash console). Tipo:
para todos os arquivos no diretório atual ou
para os arquivos em todos os subdiretórios
fonte
Você pode usar um utilitário gratuito chamado Encoding Recognizer (requer java). Você pode encontrá-lo em http://mindprod.com/products2.html#ENCODINGRECOGNISER
fonte
Semelhante à solução listada acima com o Bloco de Notas, você também pode abrir o arquivo no Visual Studio, se estiver usando isso. No Visual Studio, você pode selecionar "Arquivo> Opções avançadas de salvamento ..."
A caixa de combinação "Codificação:" informará especificamente qual codificação está sendo usada atualmente para o arquivo. Ele possui muito mais codificações de texto listadas do que o Bloco de Notas, por isso é útil ao lidar com vários arquivos de todo o mundo e qualquer outra coisa.
Assim como o Bloco de notas, você também pode alterar a codificação na lista de opções e salvar o arquivo depois de pressionar "OK". Você também pode selecionar a codificação desejada através da opção "Salvar com codificação ..." na caixa de diálogo Salvar como (clicando na seta ao lado do botão Salvar).
fonte
Algum código C aqui para detecção confiável de ascii, bom e utf8: https://unicodebook.readthedocs.io/guess_encoding.html
EDITAR:
Uma versão powershell de uma resposta C # de: Maneira eficaz de encontrar a codificação de qualquer arquivo . Funciona apenas com assinaturas (boms).
fonte
A única maneira que encontrei para fazer isso é o VIM ou o Notepad ++.
fonte