There is no way to get what you want.
Ask your clients to upload using a specified charset only.
If you see the single byte 0xC4, that could be a latin-1 encoded Ä, though in ISO-8859-5 (kyrillic) it would be as valid as with latin-1 though encoding a different character, the Ф.
Therefore it is impossible to detect the encoding without knowing the content in advance.
What you describe from the other languages, is usually a very dumb heuristic.
- Check if the input is valid UTF-8/16/32 by corresponding validators, perhaps even helped by a BOM
- If not, fall back to a single byte encoding derived from the hosts local settings


















