Saric's right. It's an old bug, but one we have struggled to pin down since it happens very rarely, can disappear for months at a time, and seems to only affect specific accounts. Sometimes, actual Shiny Pokémon look normal as well.
I don't know if this is still true, but a long time ago the way to tell if the Pokémon was actually Shiny, is that the first message in the battle would say the word "SHINY" before the Pokémon's name: "A wild SHINY Zubat appeared!". If it didn't say SHINY, it wasn't Shiny, whether or not the game showed it as one. The Server knows whether the Pokémon is Shiny and will set the correct value when the Pokémon is caught, but the game itself is getting confused somewhere along the line.
While we can't help in such situations as the game never thought the Pokémon was Shiny to begin with, what may help is if you encounter the bug again, make a note of everything you did before the battle, what Pokémon are in your party (including if any are Shiny or not) and any other details you can give us. Hopefully we can pinpoint something some day that will help us discover this bug.