Detectar se uma sequência foi codificada duas vezes em UTF-8
Preciso processar uma grande lista de strings curtas (principalmente em russo, mas qualquer outro idioma é possível, incluindo lixo aleatório de um gato andando no teclado).
Algumas dessas seqüências serão codificadas em UTF-8 duas vezes.
Preciso detectar com segurança se uma determinada string é codificada duas vezes e corrigi-la. Eu deveria fazer isso sem usar nenhuma biblioteca externa, apenas inspecionando os bytes. A detecção deve ser o mais rápida possível.
A questão é: como detectar que uma determinada string foi codificada em UTF-8 duas vezes?
Atualizar:
As strings originais estão em UTF-8. Aqui está o código AS3 que faz a segunda codificação (infelizmente não tenho controle sobre o código do cliente, então não posso corrigir isso):
private function toUTF8(s : String) : String {
var byteArray : ByteArray = new ByteArray();
byteArray.writeUTFBytes(s);
byteArray.position = 0;
var res : String = "";
while(byteArray.bytesAvailable){
res += String.fromCharCode(byteArray.readUnsignedByte());
}
return res;
}
myString = toUTF8(("" + myString).toLowerCase().substr(0, 64));
NotatoLowerCase()
ligar. Talvez isso possa ajudar?