Pergunta

Eu preciso de uma maneira de detectar se um arquivo contém caracteres de um determinado charset.

Especificamente, eu quero detectar a presença de caracteres cirílicos codificado-UTF8 em uma série de arquivos. Existe uma ferramenta para fazer isso?

Graças

Foi útil?

Solução

Se você está procurando solução pronta, você pode querer tentar Enca .

No entanto, se você só quer detectar a presença do que pode ser, possivelmente, decodificado como UTF-8 caracteres cirílicos (sem completas UTF-8 verificações de validade), você só tem que pesquisar por algo como /(\xD0[\x81\x90-\xBF]|\xD1[\x80-\x8F\x91]){ n ,}/ (este regexp exata é para n caracteres cirílico codificado-UTF8 subsequentes). Para verificação adicional que todo o arquivo contém dados válidos apenas UTF-8 que você pode usar algo como isutf8(1) .

Ambos os métodos têm seus bons e maus lados e às vezes podem dar resultados errados.

Outras dicas

IIRC a biblioteca ICU tem código que faz a detecção do conjunto de caracteres. Embora seja basicamente um melhor palpite esforço.

Edit: eu me lembrava corretamente, confira este papel / tutorial

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top