How to store international addresses?

I suppose it depends on what you need them for. Basically all you need is one field in the database and a text area in your UI. I don't know of any address that won't fit into that schema.

About the only thing that really changes much is that not every country has a ZIP code or equivalent.

Having 3-4 lines for an address or just a text field is normally sufficient, but you do want to be capturing concepts like City/State (though allowing for the fact that different countries have different names for their primary geographic administrations, like province, county, prefecture).

You might also want to read “Frank’s Compulsive Guide to Postal Addresses”, which I have found helpful.

http://www.columbia.edu/kermit/postal.html

To summarize: it’s really difficult. Unless you need to separate fields like city, state, postal code, or country for analytical purposes, the text area solution will hold an address of any format.

Daniel http://www.yup.com

Just do it like Amazon does it and use name combinations to label the fields like postal/zip code state/region, etc.. Most post offices are pretty good about delivery even if things don't all get on the right lines. For example some places might have a region, district, city, and postal code, but most people will just put the region/district or district/city together and it works. Just be careful to give ample room for input fields and don't make them all required unless you know the rules for the country in question. For example some places still don't have postal codes.