I think this problem is a combination of the iphone's supposedly smart "regional formatting" and your particular cell carrier.
For example, all phone calls and SMS sent to my phone take the form of "plus"xx (xxx)xxx-xxxx. I'm in canada and my carrier is fido, I've set the regional format to Canada. Only some of my Canadian contacts have their full number, a few doesn't even have area codes and they are all recognized and their name shows up correctly. None of my contacts have the "plus" in front the country code but I know that all incoming call on my iphone have it.
The problem comes with foreign numbers is that they can't be properly formatted into my selected system. In those cases, I've found that ommitting the "plus" helps. Then, the iphone simply groups them into one giant string, without spaces and these are recognized. Obviously, only if you cell carrier sends the country code along with the call.
If you have a lot of foreign contacts, try getting rid of the regional formatting. Select a country like Botswana that doesn't have formatting and see if it helps.
Message was edited by: Kevin Liu
Message was edited by: Kevin Liu
Message was edited by: Kevin Liu