Last active
September 29, 2023 16:10
-
-
Save budhash/9c9ab486119de0796d2de33973b63da1 to your computer and use it in GitHub Desktop.
countries csv file
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ISO3 | ISO2 | ISONUM | COUNTRY | CAPITAL | REGION | SUB-REGION | CONTINENT | LATITUDE | LONGITUDE | BORDERS | LANDLOCKED | INDEPENDENT | CURRENCYCODE | CURRENCYNAME | TLD | CALLINGCODE | EDGAR | ITU | MARC | WMO | DS | FIFA | FIPS | IOC | GAUL | GEONAMEID | LANGUAGES | LANGUAGECODE | NOTES | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AND | AD | 20 | ANDORRA | Andorra la Vella | Europe | Southern Europe | EU | 42.546245 | 1.601554 | FRA,ESP | 1 | Yes | EUR | Euro | .ad | 376 | B6 | AND | an | AND | AND | AN | AND | 7 | 3041565 | Catalan | ca-ES | |||
| ARE | AE | 784 | UNITED ARAB EMIRATES | Abu Dhabi | Asia | Western Asia | AS | 23.424076 | 53.847818 | OMN,SAU | Yes | AED | UAE Dirham | .ae | 971 | C0 | UAE | ts | ER | UAE | AE | UAE | 255 | 290557 | Arabic | ar-AE,fa,en,hi,ur | ||||
| AFG | AF | 4 | AFGHANISTAN | Kabul | Asia | Southern Asia | AS | 33.93911 | 67.709953 | IRN,PAK,TKM,UZB,TJK,CHN | 1 | Yes | AFN | Afghani | .af | 93 | B2 | AFG | af | AF | AFG | AFG | AF | AFG | 1 | 1149361 | Dari,Pashto,Turkmen | fa-AF,ps,uz-AF,tk | ||
| ATG | AG | 28 | ANTIGUA AND BARBUDA | St. John's | Americas | Caribbean | NA | 17.060816 | -61.796428 | Yes | XCD | East Caribbean Dollar | .ag | 1268 | B9 | ATG | aq | AT | ATG | AC | ANT | 11 | 3576396 | English | en-AG | |||||
| AIA | AI | 660 | ANGUILLA | The Valley | Americas | Caribbean | NA | 18.220554 | -63.068615 | Territory of GB | XCD | East Caribbean Dollar | .ai | 1264 | 1A | AIA | am | AIA | AV | AIA | 9 | 3573511 | English | en-AI | ||||||
| ALB | AL | 8 | ALBANIA | Tirana | Europe | Southern Europe | EU | 41.153332 | 20.168331 | MNE,GRC,MKD,UNK | Yes | ALL | Lek | .al | 355 | B3 | ALB | aa | AB | AL | ALB | AL | ALB | 3 | 783754 | Albanian | sq,el | |||
| ARM | AM | 51 | ARMENIA | Yerevan | Asia | Western Asia | AS | 40.069099 | 45.038189 | AZE,GEO,IRN,TUR | 1 | Yes | AMD | Armenian Dram | .am | 374 | 1B | ARM | ai | AY | AM | ARM | AM | ARM | 13 | 174982 | Armenian,Russian | hy | ||
| AGO | AO | 24 | ANGOLA | Luanda | Africa | Middle Africa | AF | -11.202692 | 17.873887 | COG,COD,ZMB,NAM | Yes | AOA | Kwanza | .ao | 244 | B7 | AGL | ao | AN | ANG | AO | ANG | 8 | 3351879 | Portuguese | pt-AO | ||||
| ATA | AQ | 10 | ANTARTICA | Antartica | Antartica | AN | -75.250973 | -0.071389 | International | .aq | 672 | ay | AA | ROS | AY | 10 | 6697173 | |||||||||||||
| ARG | AR | 32 | ARGENTINA | Buenos Aires | Americas | South America | SA | -38.416097 | -63.616672 | BOL,BRA,CHL,PRY,URY | Yes | ARS | Argentine Peso | .ar | 54 | C1 | ARG | ag | AG | RA | ARG | AR | ARG | 12 | 3865483 | Guaran�,Spanish | es-AR,en,it,de,fr,gn | |||
| ASM | AS | 16 | AMERICAN SAMOA | Pago Pago | Oceania | Polynesia | OC | -14.270972 | -170.132217 | Territory of US | USD | US Dollar | .as | 1684 | B5 | SMA | as | USA | ASA | AQ | ASA | 5 | 5880801 | English,Samoan | en-AS,sm,to | |||||
| AUT | AT | 40 | AUSTRIA | Vienna | Europe | Western Europe | EU | 47.516231 | 14.550072 | CZE,DEU,HUN,ITA,LIE,SVK,SVN,CHE | 1 | Yes | EUR | Euro | .at | 43 | C4 | AUT | au | OS | A | AUT | AU | AUT | 18 | 2782113 | Austro-Bavarian German | de-AT,hr,hu,sl | ||
| AUS | AU | 36 | AUSTRALIA | Canberra | Oceania | Australia and New Zealand | OC | -25.274398 | 133.775136 | Yes | AUD | Australian Dollar | .au | 61 | C3 | AUS | at | AU | AUS | AUS | AS | AUS | 17 | 2077456 | English | en-AU | ||||
| ABW | AW | 533 | ARUBA | Oranjestad | Americas | Caribbean | NA | 12.52111 | -69.968338 | Part of NL | AWG | Aruban Florin | .aw | 297 | 1C | ABW | aw | NU | ARU | AA | ARU | 14 | 3577279 | Dutch,Papiamento | nl-AW,es,en | |||||
| ALA | AX | 248 | ALAND ISLANDS | Mariehamn | Europe | Northern Europe | EU | 60.116667 | 19.9 | Part of FI | EUR | Euro | .ax | 358 | FIN | ALD | 1242 | 661882 | Swedish | sv-AX | ||||||||||
| AZE | AZ | 31 | AZERBAIJAN | Baku | Asia | Western Asia | AS | 40.143105 | 47.576927 | ARM,GEO,IRN,RUS,TUR | 1 | Yes | AZN | Azerbaijanian Manat | .az | 994 | 1D | AZE | aj | AJ | AZ | AZE | AJ | AZE | 19 | 587116 | Azerbaijani,Russian | az,ru,hy | ||
| BIH | BA | 70 | BOSNIA AND HERZEGOVINA | Sarajevo | Europe | Southern Europe | EU | 43.915886 | 17.679076 | HRV,MNE,SRB | Yes | BAM | Convertible Mark | .ba | 387 | 1E | BIH | bn | BG | BIH | BIH | BK | BIH | 34 | 3277605 | Bosnian,Croatian,Serbian | bs,hr-BA,sr-BA | |||
| BRB | BB | 52 | BARBADOS | Bridgetown | Americas | Caribbean | NA | 13.193887 | -59.543198 | Yes | BBD | Barbados Dollar | .bb | 1246 | C8 | BRB | bb | BR | BDS | BRB | BB | BAR | 24 | 3374084 | English | en-BB | ||||
| BGD | BD | 50 | BANGLADESH | Dhaka | Asia | Southern Asia | AS | 23.684994 | 90.356331 | MMR,IND | Yes | BDT | Taka | .bd | 880 | C7 | BGD | bg | BW | BD | BAN | BG | BAN | 23 | 1210997 | Bengali | bn-BD,en | |||
| BEL | BE | 56 | BELGIUM | Brussels | Europe | Western Europe | EU | 50.503887 | 4.469936 | FRA,DEU,LUX,NLD | Yes | EUR | Euro | .be | 32 | C9 | BEL | be | BX | B | BEL | BE | BEL | 27 | 2802361 | German,French,Dutch | nl-BE,fr-BE,de-BE | |||
| BFA | BF | 854 | BURKINA FASO | Ouagadougou | Africa | Western Africa | AF | 12.238333 | -1.561593 | BEN,CIV,GHA,MLI,NER,TGO | 1 | Yes | XOF | CFA Franc BCEAO | .bf | 226 | X2 | BFA | uv | HV | BF | BFA | UV | BUR | 42 | 2361809 | French | fr-BF | ||
| BGR | BG | 100 | BULGARIA | Sofia | Europe | Eastern Europe | EU | 42.733883 | 25.48583 | GRC,MKD,ROU,SRB,TUR | Yes | BGN | Bulgarian Lev | .bg | 359 | E0 | BUL | bu | BU | BG | BUL | BU | BUL | 41 | 732800 | Bulgarian | bg,tr-BG,rom | |||
| BHR | BH | 48 | BAHRAIN | Manama | Asia | Western Asia | AS | 25.930414 | 50.637772 | Yes | BHD | Bahraini Dinar | .bh | 973 | C6 | BHR | ba | BN | BRN | BHR | BA | BRN | 21 | 290291 | Arabic | ar-BH,en,fa,ur | ||||
| BDI | BI | 108 | BURUNDI | Bujumbura | Africa | Eastern Africa | AF | -3.373056 | 29.918886 | COD,RWA,TZA | 1 | Yes | BIF | Burundi Franc | .bi | 257 | E2 | BDI | bd | BI | RU | BDI | BY | BDI | 43 | 433561 | French,Kirundi | fr-BI,rn | ||
| BEN | BJ | 204 | BENIN | Porto-Novo | Africa | Western Africa | AF | 9.30769 | 2.315834 | BFA,NER,NGA,TGO | Yes | XOF | CFA Franc BCEAO | .bj | 229 | G6 | BEN | dm | BJ | DY | BEN | BN | BEN | 29 | 2395170 | French | fr-BJ | |||
| BLM | BL | 652 | SAINT BARTHELEMY | Gustavia | Americas | Caribbean | NA | 18.5 | -63.41666666 | Part of FR | EUR | Euro | .bl | 590 | sc | TB | 3578476 | French | fr | |||||||||||
| BMU | BM | 60 | BERMUDA | Hamilton | Americas | Northern America | NA | 32.321384 | -64.75737 | Territory of GB | BMD | Bermudian Dollar | .bm | 1441 | D0 | BER | bm | BE | BER | BD | BER | 30 | 3573345 | English | en-BM,pt | |||||
| BRN | BN | 96 | BRUNEI DARUSSALAM | Bandar Seri Begawan | Asia | South-Eastern Asia | AS | 4.535277 | 114.727669 | MYS | Yes | BND | Brunei Dollar | .bn | 673 | D9 | BRU | bx | BD | BRU | BRU | BX | BRU | 40 | 1820814 | Malay | ms-BN,en-BN | |||
| BOL | BO | 68 | BOLIVIA | Sucre | Americas | South America | SA | -16.290154 | -63.588653 | ARG,BRA,CHL,PRY,PER | 1 | Yes | BOB | Boliviano | .bo | 591 | BOL | bo | BO | BOL | BOL | BL | BOL | 33 | 3923057 | Aymara,Guaran�,Quechua,Spanish | es-BO,qu,ay | |||
| BES | BQ | 535 | BONAIRE, SINT EUSTATIUS AND SABA | Americas | Caribbean | NA | 12.1833 | -68.233 | Part of NL | USD | US Dollar | .bq | 599 | ATN | ca | NU | ANT | NL | AHO | 176 | 7626844 | nl,pap,en | three special municipalities of the Netherlands that are located in the Caribbean Sea | |||||||
| BRA | BR | 76 | BRAZIL | Brasilia | Americas | South America | SA | -14.235004 | -51.92528 | ARG,BOL,COL,GUF,GUY,PRY,PER,SUR,URY,VEN | Yes | BRL | Brazilian Real | .br | 55 | D5 | B | bl | BZ | BR | BRA | BR | BRA | 37 | 3469034 | Portuguese | pt-BR,es,en,fr | |||
| BHS | BS | 44 | BAHAMAS | Nassau | Americas | Caribbean | NA | 25.03428 | -77.39628 | Yes | BSD | Bahamian Dollar | .bs | 1242 | C5 | BAH | bf | BA | BS | BAH | BF | BAH | 20 | 3572887 | English | en-BS | ||||
| BTN | BT | 64 | BHUTAN | Thimphu | Asia | Southern Asia | AS | 27.514162 | 90.433601 | CHN,IND | 1 | Yes | BTN | Indian Rupee | .bt | 975 | D2 | BTN | bt | BHU | BT | BHU | 31 | 1252634 | Dzongkha | dz | ||||
| BVT | BV | 74 | BOUVET ISLAND | Antartica | Antartica | AN | -54.423199 | 3.413194 | Territory of NO | NOK | Norwegian Krone | .bv | 47 | bv | BV | BV | 36 | 3371123 | Norwegian | |||||||||||
| BWA | BW | 72 | BOTSWANA | Gaborone | Africa | Southern Africa | AF | -22.328474 | 24.684866 | NAM,ZAF,ZMB,ZWE | 1 | Yes | BWP | Pula | .bw | 267 | B1 | BOT | bs | BC | BW | BOT | BC | BOT | 35 | 933860 | English,Tswana | en-BW,tn-BW | ||
| BLR | BY | 112 | BELARUS | Minsk | Europe | Eastern Europe | EU | 53.709807 | 27.953389 | LVA,LTU,POL,RUS,UKR | 1 | Yes | BYR | Belarussian Ruble | .by | 375 | 1F | BLR | bw | BY | BY | BLR | BO | BLR | 26 | 630336 | Belarusian,Russian | be,ru | ||
| BLZ | BZ | 84 | BELIZE | Belmopan | Americas | Central America | NA | 17.189877 | -88.49765 | GTM,MEX | Yes | BZD | Belize Dollar | .bz | 501 | D1 | BLZ | bh | BH | BZ | BLZ | BH | BIZ | 28 | 3582678 | Belizean Creole,English,Spanish | en-BZ,es | |||
| CAN | CA | 124 | CANADA | Ottawa | Americas | Northern America | NA | 56.130366 | -106.346771 | USA | Yes | CAD | Canadian Dollar | .ca | 1 | CAN | xxc | CN | CDN | CAN | CA | CAN | 46 | 6251999 | English,French | en-CA,fr-CA,iu | ||||
| CCK | CC | 166 | COCOS [KEELING] ISLANDS | West Island | Oceania | Australia and New Zealand | AS | -12.164165 | 96.870956 | Territory of AU | AUD | Australian Dollar | .cc | 61 | ICO | xb | KK | AUS | CCK | CK | 56 | 1547376 | English | ms-CC,en | ||||||
| COD | CD | 180 | CONGO [DRC] | Kinshasa | Africa | Middle Africa | AF | -4.038333 | 21.758664 | AGO,BDI,CAF,COG,RWA,SSD,TZA,UGA,ZMB | Yes | CDF | Congolese Franc | .cd | 243 | COD | cg | ZR | ZRE | COD | CG | COD | 68 | 203312 | French,Kikongo,Lingala,Tshiluba,Swahili | fr-CD,ln,kg | ||||
| CAF | CF | 140 | CENTRAL AFRICAN REPUBLIC | Bangui | Africa | Middle Africa | AF | 6.611111 | 20.939444 | CMR,TCD,COD,COG,SSD,SDN | 1 | Yes | XAF | CFA Franc BEAC | .cf | 236 | F0 | CAF | cx | CE | RCA | CTA | CT | CAF | 49 | 239880 | French,Sango | fr-CF,sg,ln,kg | ||
| COG | CG | 178 | CONGO | Brazzaville | Africa | Middle Africa | AF | -0.228021 | 15.827659 | AGO,CMR,CAF,COD,GAB | Yes | XAF | CFA Franc BEAC | .cg | 242 | G0 | COG | cf | CG | RCB | CGO | CF | CGO | 59 | 2260494 | French,Kikongo,Lingala | fr-CG,kg,ln-CG | |||
| CHE | CH | 756 | SWITZERLAND | Bern | Europe | Western Europe | EU | 46.818188 | 8.227512 | AUT,FRA,ITA,LIE,DEU | 1 | Yes | CHF | Swiss Franc | .ch | 41 | V8 | SUI | sz | SW | CH | SUI | SZ | SUI | 237 | 2658434 | French,Swiss German,Italian,Romansh | de-CH,fr-CH,it-CH,rm | ||
| CIV | CI | 384 | COTE D'IVOIRE | Yamoussoukro | Africa | Western Africa | AF | 7.539989 | -5.54708 | BFA,GHA,GIN,LBR,MLI | Yes | XOF | CFA Franc BCEAO | .ci | 225 | CTI | iv | IV | CI | CIV | IV | CIV | 66 | 2287781 | French | fr-CI | ||||
| COK | CK | 184 | COOK ISLANDS | Avarua | Oceania | Polynesia | OC | -21.236736 | -159.777671 | Associated with NZ | NZD | New Zealand Dollar | .ck | 682 | G1 | CKH | cw | KU | NZ | COK | CW | COK | 60 | 1899402 | English,Cook Islands M_ori | en-CK,mi | ||||
| CHL | CL | 152 | CHILE | Santiago | Americas | South America | SA | -35.675147 | -71.542969 | ARG,BOL,PER | Yes | CLP | Chilean Peso | .cl | 56 | F3 | CHL | cl | CH | RCH | CHI | CI | CHI | 51 | 3895114 | Spanish | es-CL | |||
| CMR | CM | 120 | CAMEROON | Yaounde | Africa | Middle Africa | AF | 7.369722 | 12.354722 | CAF,TCD,COG,GNQ,GAB,NGA | Yes | XAF | CFA Franc BEAC | .cm | 237 | E4 | CME | cm | CM | CAM | CMR | CM | CMR | 45 | 2233387 | English,French | en-CM,fr-CM | |||
| CHN | CN | 156 | CHINA | Beijing | Asia | Eastern Asia | AS | 35.86166 | 104.195397 | AFG,BTN,MMR,HKG,IND,KAZ,PRK,KGZ,LAO,MAC,MNG,PAK,RUS,TJK,VNM | Yes | CNY | Yuan Renminbi | .cn | 86 | F4 | CHN | cc | CI | CHN | CH | CHN | 53 | 1814991 | Mandarin | zh-CN,yue,wuu,dta,ug,za | ||||
| COL | CO | 170 | COLOMBIA | Bogota | Americas | South America | SA | 4.570868 | -74.297333 | BRA,ECU,PAN,PER,VEN | Yes | COP | Colombian Peso | .co | 57 | F8 | CLM | ck | CO | CO | COL | CO | COL | 57 | 3686110 | Spanish | es-CO | |||
| CRI | CR | 188 | COSTA RICA | San Jose | Americas | Central America | NA | 9.748917 | -83.753428 | NIC,PAN | Yes | CRC | Costa Rican Colon | .cr | 506 | G2 | CTR | cr | CS | CR | CRC | CS | CRC | 61 | 3624060 | Spanish | es-CR,en | |||
| CUB | CU | 192 | CUBA | Havana | Americas | Caribbean | NA | 21.521757 | -77.781167 | Yes | CUP | Cuban Peso | .cu | 53 | G3 | CUB | cu | CU | C | CUB | CU | CUB | 63 | 3562981 | Spanish | es-CU | ||||
| CPV | CV | 132 | CABO VERDE | Praia | Africa | Western Africa | AF | 16.002082 | -24.013197 | Yes | CVE | Cabo Verde Escudo | .cv | 238 | CPV | cv | CV | CPV | CV | CPV | 47 | 3374766 | Portuguese | pt-CV | ||||||
| CUW | CW | 531 | CURACAO | Willemstad | Americas | Caribbean | NA | 12.116667 | -68.933333 | Part of NL | ANG | Netherlands Antillean Guilder | .cw | 5999 | co | UC | 7626836 | English,Dutch,Papiamento | nl,pap | |||||||||||
| CXR | CX | 162 | CHRISTMAS ISLAND | Flying Fish Cove | Oceania | Australia and New Zealand | AS | -10.447525 | 105.690449 | Territory of AU | AUD | Australian Dollar | .cx | 61 | CHR | xa | KI | AUS | CXR | KT | 54 | 2078138 | English | en,zh,ms-CC | ||||||
| CYP | CY | 196 | CYPRUS | Nicosia | Europe | Eastern Europe | EU | 35.126413 | 33.429859 | GBR | Yes | EUR | Euro | .cy | 357 | G4 | CYP | cy | CY | CY | CYP | CY | CYP | 64 | 146669 | Greek,Turkish | el-CY,tr-CY,en | |||
| CZE | CZ | 203 | CZECH REPUBLIC | Prague | Europe | Eastern Europe | EU | 49.817492 | 15.472962 | AUT,DEU,POL,SVK | 1 | Yes | CZK | Czech Koruna | .cz | 420 | 2N | CZE | xr | CZ | CZ | CZE | EZ | CZE | 65 | 3077311 | Czech,Slovak | cs,sk | ||
| DEU | DE | 276 | GERMANY | Berlin | Europe | Western Europe | EU | 51.165691 | 10.451526 | AUT,BEL,CZE,DNK,FRA,LUX,NLD,POL,CHE | Yes | EUR | Euro | .de | 49 | 2M | D | gw | DL | D | GER | GM | GER | 93 | 2921044 | German | de | |||
| DJI | DJ | 262 | DJIBOUTI | Djibouti | Africa | Eastern Africa | AF | 11.825138 | 42.590275 | ERI,ETH,SOM | Yes | DJF | Djibouti Franc | .dj | 253 | 1G | DJI | ft | DJ | DJI | DJ | DJI | 70 | 223816 | Arabic,French | fr-DJ,ar,so-DJ,aa | ||||
| DNK | DK | 208 | DENMARK | Copenhagen | Europe | Northern Europe | EU | 56.26392 | 9.501785 | DEU | Yes | DKK | Danish Krone | .dk | 45 | G7 | DNK | dk | DN | DK | DEN | DA | DEN | 69 | 2623032 | Danish | da-DK,en,fo,de-DK | |||
| DMA | DM | 212 | DOMINICA | Roseau | Americas | Caribbean | NA | 15.414999 | -61.370976 | Yes | XCD | East Caribbean Dollar | .dm | 1767 | G9 | DMA | dq | DO | WD | DMA | DO | DMA | 71 | 3575830 | English | en-DM | ||||
| DOM | DO | 214 | DOMINICAN REPUBLIC | Santo Domingo | Americas | Caribbean | NA | 18.735693 | -70.162651 | HTI | Yes | DOP | Dominican Peso | .do | 1809, 1829, 1849 | G8 | DOM | dr | DR | DOM | DOM | DR | DOM | 72 | 3508796 | Spanish | es-DO | |||
| DZA | DZ | 12 | ALGERIA | Algiers | Africa | Northern Africa | AF | 28.033886 | 1.659626 | TUN,LBY,NER,ESH,MRT,MLI,MAR | Yes | DZD | Algerian Dinar | .dz | 213 | B4 | ALG | ae | AL | DZ | ALG | AG | ALG | 4 | 2589581 | Arabic | ar-DZ | |||
| ECU | EC | 218 | ECUADOR | Quito | Americas | South America | SA | -1.831239 | -78.183406 | COL,PER | Yes | USD | US Dollar | .ec | 593 | H1 | EQA | ec | EQ | EC | ECU | EC | ECU | 73 | 3658394 | Spanish | es-EC | |||
| EST | EE | 233 | ESTONIA | Tallinn | Europe | Northern Europe | EU | 58.595272 | 25.013607 | LVA,RUS | Yes | EUR | Euro | .ee | 372 | 1H | EST | er | EO | EST | EST | EN | EST | 78 | 453733 | Estonian | et,ru | |||
| EGY | EG | 818 | EGYPT | Cairo | Africa | Northern Africa | AF | 26.820553 | 30.802498 | ISR,LBY,SDN | Yes | EGP | Egyptian Pound | .eg | 20 | H2 | EGY | ua | EG | ET | EGY | EG | EGY | 40765 | 357994 | Arabic | ar-EG,en,fr | |||
| ESH | EH | 732 | WESTERN SAHARA | El-Aaiun | Africa | Northern Africa | AF | 24.215527 | -12.885834 | DZA,MRT,MAR | In contention | MAD | Moroccan Dirham | .eh | 212 | U5 | AOE | ss | SAH | WI | 268 | 2461445 | Berber,Hassaniya,Spanish | ar,mey | ||||||
| ERI | ER | 232 | ERITREA | Asmara | Africa | Eastern Africa | AF | 15.179384 | 39.782334 | DJI,ETH,SDN | Yes | ERN | Nakfa | .er | 291 | 1J | ERI | ea | ERI | ER | ERI | 77 | 338010 | Arabic,English,Tigrinya | aa-ER,ar,tig,kun,ti-ER | |||||
| ESP | ES | 724 | SPAIN | Madrid | Europe | Southern Europe | EU | 40.463667 | -3.74922 | AND,FRA,GIB,PRT,MAR | Yes | EUR | Euro | .es | 34 | U3 | E | sp | SP | E | ESP | SP | ESP | 229 | 2510769 | Catalan,Basque,Galician,Occitan,Spanish | es-ES,ca,gl,eu,oc | |||
| ETH | ET | 231 | ETHIOPIA | Addis Ababa | Africa | Eastern Africa | AF | 9.145 | 40.489673 | DJI,ERI,KEN,SOM,SSD,SDN | 1 | Yes | ETB | Ethiopian Birr | .et | 251 | H5 | ETH | et | ET | ETH | ETH | ET | ETH | 79 | 337996 | Amharic | am,en-ET,om-ET,ti-ET,so-ET,sid | ||
| FIN | FI | 246 | FINLAND | Helsinki | Europe | Northern Europe | EU | 61.92411 | 25.748151 | NOR,SWE,RUS | Yes | EUR | Euro | .fi | 358 | H9 | FIN | fi | FI | FIN | FIN | FI | FIN | 84 | 660013 | Finnish,Swedish | fi-FI,sv-FI,smn | |||
| FJI | FJ | 242 | FIJI | Suva | Oceania | Melanesia | OC | -16.578193 | 179.414413 | Yes | FJD | Fiji Dollar | .fj | 679 | H8 | FJI | fj | FJ | FJI | FIJ | FJ | FIJ | 83 | 2205218 | English,Fijian,Fiji Hindi | en-FJ,fj | ||||
| FLK | FK | 238 | FALKLAND ISLANDS (MALVINAS) | Stanley | Americas | South America | SA | -51.796253 | -59.523613 | Territory of GB | FKP | Falkland Islands Pound | .fk | 500 | H7 | FLK | fk | FK | FLK | FK | FLK | 81 | 3474414 | English | en-FK | |||||
| FSM | FM | 583 | MICRONESIA, FEDERATED STATES OF | Palikir | Oceania | Micronesia | OC | 7.425554 | 150.550812 | Yes | USD | US Dollar | .fm | 691 | FSM | fm | FSM | FM | FSM | 163 | 2081918 | English | en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg | |||||||
| FRO | FO | 234 | FAROE ISLANDS | Torshavn | Europe | Northern Europe | EU | 61.892635 | -6.911806 | Part of DK | DKK | Danish Krone | .fo | 298 | FRO | fa | FA | FO | FRO | FO | FAR | 82 | 2622320 | Danish,Faroese | fo,da-FO | |||||
| FRA | FR | 250 | FRANCE | Paris | Europe | Western Europe | EU | 46.227638 | 2.213749 | AND,BEL,DEU,ITA,LUX,MCO,ESP,CHE | Yes | EUR | Euro | .fr | 33 | I0 | F | fr | FR | F | FRA | FR | FRA | 85 | 3017382 | French | fr-FR,frp,br,co,ca,eu,oc | |||
| GAB | GA | 266 | GABON | Libreville | Africa | Middle Africa | AF | -0.803689 | 11.609444 | CMR,COG,GNQ | Yes | XAF | CFA Franc BEAC | .ga | 241 | I5 | GAB | go | GO | G | GAB | GB | GAB | 89 | 2400553 | French | fr-GA | |||
| GBR | GB | 826 | UNITED KINGDOM | London | Europe | Northern Europe | EU | 55.378051 | -3.435973 | IRL | Yes | GBP | Pound Sterling | .uk | 44 | G | xxk | UK | GB | ENG,NIR,SCO,WAL | UK | GBR | 256 | 2635167 | English | en-GB,cy-GB,gd | ||||
| GRD | GD | 308 | GRENADA | St. George's | Americas | Caribbean | NA | 12.262776 | -61.604171 | Yes | XCD | East Caribbean Dollar | .gd | 1473 | J5 | GRD | gd | GD | WG | GRN | GJ | GRN | 99 | 3580239 | English | en-GD | ||||
| GEO | GE | 268 | GEORGIA | Tbilisi | Asia | Western Asia | AS | 42.315407 | 43.356892 | ARM,AZE,RUS,TUR | Yes | GEL | Lari | .ge | 995 | 2Q | GEO | gs | GG | GE | GEO | GG | GEO | 92 | 614540 | Georgian | ka,ru,hy,az | |||
| GUF | GF | 254 | FRENCH GUIANA | Cayenne | Americas | South America | SA | 3.933889 | -53.125782 | BRA,SUR | Part of FR | EUR | Euro | .gf | 594 | I3 | GUF | fg | FG | F | GUF | FG | FGU | 86 | 3381670 | French | fr-GF | |||
| GGY | GG | 831 | GUERNSEY | St. Peter Port | Europe | Northern Europe | EU | 49.465691 | -2.585278 | Crown dependency of GB | GBP | Pound Sterling | .gg | 44 | Y7 | uik | GBG | GBG | GK | 104 | 3042362 | English,French,Guern_siais | en,fr | |||||||
| GHA | GH | 288 | GHANA | Accra | Africa | Western Africa | AF | 7.946527 | -1.023194 | BFA,CIV,TGO | Yes | GHS | Ghana Cedi | .gh | 233 | J0 | GHA | gh | GH | GH | GHA | GH | GHA | 94 | 2300660 | English | en-GH,ak,ee,tw | |||
| GIB | GI | 292 | GIBRALTAR | Gibraltar | Europe | Southern Europe | EU | 36.137741 | -5.345374 | ESP | Territory of GB | GIP | Gibraltar Pound | .gi | 350 | J1 | GIB | gi | GI | GBZ | GBZ | GI | GIB | 95 | 2411586 | English | en-GI,es,it,pt | |||
| GRL | GL | 304 | GREENLAND | Nuuk | Americas | Northern America | NA | 71.706936 | -42.604303 | Part of DK | DKK | Danish Krone | .gl | 299 | J4 | GRL | gl | GL | DK | GRL | GL | GRL | 98 | 3425505 | Greenlandic | kl,da-GL,en | ||||
| GMB | GM | 270 | GAMBIA | Banjul | Africa | Western Africa | AF | 13.443182 | -15.310139 | SEN | Yes | GMD | Dalasi | .gm | 220 | I6 | GMB | gm | GB | WAG | GAM | GA | GAM | 90 | 2413451 | English | en-GM,mnk,wof,wo,ff | |||
| GIN | GN | 324 | GUINEA | Conakry | Africa | Western Africa | AF | 9.945587 | -9.696645 | CIV,GNB,LBR,MLI,SEN,SLE | Yes | GNF | Guinea Franc | .gn | 224 | J9 | GUI | gv | GN | RG | GUI | GV | GUI | 106 | 2420477 | French | fr-GN | |||
| GLP | GP | 312 | GUADELOUPE | Basse-Terre | Americas | Caribbean | NA | 16.995971 | -62.067641 | Part of FR | EUR | Euro | .gp | 590 | J6 | GDL | gp | MF | F | GLP | GP | GUD | 100 | 3579143 | French | fr-GP | ||||
| GNQ | GQ | 226 | EQUATORIAL GUINEA | Malabo | Africa | Middle Africa | AF | 1.650801 | 10.267895 | CMR,GAB | Yes | XAF | CFA Franc BEAC | .gq | 240 | H4 | GNE | eg | GQ | EQG | EK | GEQ | 76 | 2309096 | French,Portuguese,Spanish | es-GQ,fr | ||||
| GRC | GR | 300 | GREECE | Athens | Europe | Southern Europe | EU | 39.074208 | 21.824312 | ALB,BGR,TUR,MKD | Yes | EUR | Euro | .gr | 30 | J3 | GRC | gr | GR | GR | GRE | GR | GRE | 97 | 390903 | Greek | el-GR,en,fr | |||
| SGS | GS | 239 | SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS | King Edward Point | Americas | South America | AN | -54.429579 | -36.587909 | Territory of GB | GBP | Pound Sterling | .gs | 500 | xs | SX | 228 | 3474415 | English | en | ||||||||||
| GTM | GT | 320 | GUATEMALA | Guatemala City | Americas | Central America | NA | 15.783471 | -90.230759 | BLZ,SLV,HND,MEX | Yes | GTQ | Quetzal | .gt | 502 | J8 | GTM | gt | GU | GCA | GUA | GT | GUA | 103 | 3595528 | Spanish | es-GT | |||
| GUM | GU | 316 | GUAM | Hagatna | Oceania | Micronesia | OC | 13.444304 | 144.793731 | Territory of US | USD | US Dollar | .gu | 1671 | GU | GUM | gu | GM | USA | GUM | GQ | GUM | 101 | 4043988 | Chamorro,English,Spanish | en-GU,ch-GU | ||||
| GNB | GW | 624 | GUINEA-BISSAU | Bissau | Africa | Western Africa | AF | 11.803749 | -15.180413 | GIN,SEN | Yes | XOF | CFA Franc BCEAO | .gw | 245 | S0 | GNB | pg | GW | GNB | PU | GBS | 105 | 2372248 | Portuguese | pt-GW,pov | ||||
| GUY | GY | 328 | GUYANA | Georgetown | Americas | South America | SA | 4.860416 | -58.93018 | BRA,SUR,VEN | Yes | GYD | Guyana Dollar | .gy | 592 | K0 | GUY | gy | GY | GUY | GUY | GY | GUY | 107 | 3378535 | English | en-GY | |||
| HKG | HK | 344 | HONG KONG | City of Victoria | Asia | Eastern Asia | AS | 22.396428 | 114.109497 | CHN | Part of CN | HKD | Hong Kong Dollar | .hk | 852 | HKG | HK | HK | HKG | HK | HKG | 33364 | 1819730 | English,Chinese | zh-HK,yue,zh,en | No official capital | ||||
| HMD | HM | 334 | HEARD ISLAND AND MCDONALD ISLANDS | Oceania | Australia and New Zealand | AN | -53.08181 | 73.504158 | Territory of AU | AUD | Australian Dollar | .hm | 672 | hm | AUS | HM | 109 | 1547314 | English | |||||||||||
| HND | HN | 340 | HONDURAS | Tegucigalpa | Americas | Central America | NA | 15.199999 | -86.241905 | GTM,SLV,NIC | Yes | HNL | Lempira | .hn | 504 | K2 | HND | ho | HO | HON | HO | HON | 111 | 3608932 | Spanish | es-HN | ||||
| HRV | HR | 191 | CROATIA | Zagreb | Europe | Southern Europe | EU | 45.16666666 | 15.2 | BIH,HUN,MNE,SRB,SVN | Yes | HRK | Croatian Kuna | .hr | 385 | 1M | HRV | ci | RH | HR | CRO | HR | CRO | 62 | 3202326 | Croatian | hr-HR,sr | |||
| HTI | HT | 332 | HAITI | Port-au-Prince | Americas | Caribbean | NA | 18.971187 | -72.285215 | DOM | Yes | HTG | Haitian Gourde | .ht | 509 | K1 | HTI | ht | HA | RH | HAI | HA | HAI | 108 | 3723988 | French,Haitian Creole | ht,fr-HT | |||
| HUN | HU | 348 | HUNGARY | Budapest | Europe | Eastern Europe | EU | 47.162494 | 19.503304 | AUT,HRV,ROU,SRB,SVK,SVN,UKR | 1 | Yes | HUF | Forint | .hu | 36 | K5 | HNG | hu | HU | H | HUN | HU | HUN | 113 | 719819 | Hungarian | hu-HU | ||
| IDN | ID | 360 | INDONESIA | Jakarta | Asia | South-Eastern Asia | AS | -0.789275 | 113.921327 | TLS,MYS,PNG | Yes | IDR | Rupiah | .id | 62 | K8 | INS | io | ID | RI | IDN | ID | INA | 116 | 1643084 | Indonesian | id,en,nl,jv | |||
| IRL | IE | 372 | IRELAND | Dublin | Europe | Northern Europe | EU | 53.41291 | -8.24389 | GBR | Yes | EUR | Euro | .ie | 353 | L2 | IRL | ie | IE | IRL | IRL | EI | IRL | 119 | 2963597 | English,Irish | en-IE,ga-IE | |||
| ISR | IL | 376 | ISRAEL | Jerusalem | Asia | Western Asia | AS | 31.046051 | 34.851612 | EGY,JOR,LBN,SYR | Yes | ILS | Israeli New Shekel | .il | 972 | L3 | ISR | is | IS | IL | ISR | IS | ISR | 121 | 294640 | Arabic,Hebrew | he,ar-IL,en-IL, | |||
| IMN | IM | 833 | ISLE OF MAN | Douglas | Europe | Northern Europe | EU | 54.236107 | -4.548056 | Crown dependency of GB | GBP | Pound Sterling | .im | 44 | Y8 | uik | GBM | GBM | IM | 120 | 3042225 | English,Manx | en,gv | |||||||
| IND | IN | 356 | INDIA | New Delhi | Asia | Southern Asia | AS | 20.593684 | 78.96288 | AFG,BGD,BTN,MMR,CHN,NPL,PAK,LKA | Yes | INR | Indian Rupee | .in | 91 | K7 | IND | ii | IN | IND | IND | IN | IND | 115 | 1269750 | English,Hindi,Tamil | en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc | |||
| IOT | IO | 86 | BRITISH INDIAN OCEAN TERRITORY | Diego Garcia | Africa | Eastern Africa | AS | -6.343194 | 71.876519 | Territory of GB | GBP | Pound Sterling | .io | 246 | BIO | bi | IO | 38 | 1282588 | English | en-IO | |||||||||
| IRQ | IQ | 368 | IRAQ | Baghdad | Asia | Western Asia | AS | 33.223191 | 43.679291 | IRN,JOR,KWT,SAU,SYR,TUR | Yes | IQD | Iraqi Dinar | .iq | 964 | L0 | IRQ | iq | IQ | IRQ | IRQ | IZ | IRQ | 118 | 99237 | Arabic,Aramaic,Sorani | ar-IQ,ku,hy | |||
| IRN | IR | 364 | IRAN | Tehran | Asia | Southern Asia | AS | 32.427908 | 53.688046 | AFG,ARM,AZE,IRQ,PAK,TUR,TKM | Yes | IRR | Iranian Rial | .ir | 98 | IRN | ir | IR | IR | IRN | IR | IRI | 117 | 130758 | Persian | fa-IR,ku | ||||
| ISL | IS | 352 | ICELAND | Reykjavik | Europe | Northern Europe | EU | 64.963051 | -19.020835 | Yes | ISK | Iceland Krona | .is | 354 | K6 | ISL | ic | IL | IS | ISL | IC | ISL | 114 | 2629691 | Icelandic | is,en,de,da,sv,no | ||||
| ITA | IT | 380 | ITALY | Rome | Europe | Southern Europe | EU | 41.87194 | 12.56738 | AUT,FRA,SMR,SVN,CHE,VAT | Yes | EUR | Euro | .it | 39 | L6 | I | it | IY | I | ITA | IT | ITA | 122 | 3175395 | Austro-Bavarian German,Italian,Sardinian | it-IT,de-IT,fr-IT,sc,ca,co,sl | |||
| JEY | JE | 832 | JERSEY | Saint Helier | Europe | Northern Europe | EU | 49.214439 | -2.13125 | Crown dependency of GB | GBP | Pound Sterling | .je | 44 | Y9 | uik | GBJ | GBJ | JE | 128 | 3042142 | English,French,J�rriais | en,pt | |||||||
| JAM | JM | 388 | JAMAICA | Kingston | Americas | Caribbean | NA | 18.109581 | -77.297508 | Yes | JMD | Jamaican Dollar | .jm | 1876 | L8 | JMC | jm | JM | JA | JAM | JM | JAM | 123 | 3489940 | English,Jamaican Patois | en-JM | ||||
| JOR | JO | 400 | JORDAN | Amman | Asia | Western Asia | AS | 30.585164 | 36.238414 | IRQ,ISR,SAU,SYR | Yes | JOD | Jordanian Dinar | .jo | 962 | M2 | JOR | jo | JD | HKJ | JOR | JO | JOR | 130 | 248816 | Arabic | ar-JO,en | |||
| JPN | JP | 392 | JAPAN | Tokyo | Asia | Eastern Asia | AS | 36.204824 | 138.252924 | Yes | JPY | Yen | .jp | 81 | M0 | J | ja | JP | J | JPN | JA | JPN | 126 | 1861060 | Japanese | ja | ||||
| KEN | KE | 404 | KENYA | Nairobi | Africa | Eastern Africa | AF | -0.023559 | 37.906193 | ETH,SOM,SSD,TZA,UGA | Yes | KES | Kenyan Shilling | .ke | 254 | M3 | KEN | ke | KN | EAK | KEN | KE | KEN | 133 | 192950 | English,Swahili | en-KE,sw-KE | |||
| KGZ | KG | 417 | KYRGYZSTAN | Bishkek | Asia | Central Asia | AS | 41.20438 | 74.766098 | CHN,KAZ,TJK,UZB | 1 | Yes | KGS | Som | .kg | 996 | 1N | KGZ | kg | KG | KS | KGZ | KG | KGZ | 138 | 1527747 | Kyrgyz,Russian | ky,uz,ru | ||
| KHM | KH | 116 | CAMBODIA | Phnom Penh | Asia | South-Eastern Asia | AS | 12.565679 | 104.990963 | LAO,THA,VNM | Yes | KHR | Riel | .kh | 855 | E3 | CBG | cb | KP | K | CAM | CB | CAM | 44 | 1831722 | Khmer | km,fr,en | |||
| KIR | KI | 296 | KIRIBATI | Tarawa | Oceania | Micronesia | OC | -3.370417 | -168.734039 | Yes | AUD | Australian Dollar | .ki | 686 | J2 | KIR | gb | KB | KIR | KR | KIR | 135 | 4030945 | English,Gilbertese | en-KI,gil | |||||
| COM | KM | 174 | COMOROS | Moroni | Africa | Eastern Africa | AF | -11.875001 | 43.872219 | Yes | KMF | Comoro Franc | .km | 269 | F9 | COM | cq | IC | COM | CN | COM | 58 | 921929 | Arabic,French,Comorian | ar,fr-KM | |||||
| KNA | KN | 659 | SAINT KITTS AND NEVIS | Basseterre | Americas | Caribbean | NA | 17.357822 | -62.782998 | Yes | XCD | East Caribbean Dollar | .kn | 1869 | U7 | KNA | xd | AT | SKN | SC | SKN | 208 | 3575174 | English | en-KN | |||||
| PRK | KP | 408 | NORTH KOREA | Pyongyang | Asia | Eastern Asia | AS | 40.339852 | 127.510093 | CHN,KOR,RUS | Yes | KPW | North Korean Won | .kp | 850 | KRE | kn | KR | PRK | KN | PRK | 67 | 1873107 | Korean | ko-KP | |||||
| KOR | KR | 410 | SOUTH KOREA | Seoul | Asia | Eastern Asia | AS | 35.907757 | 127.766922 | PRK | Yes | KRW | South Korean Won | .kr | 82 | KOR | ko | KO | ROK | KOR | KS | KOR | 202 | 1835841 | Korean | ko-KR,en | ||||
| KWT | KW | 414 | KUWAIT | Kuwait City | Asia | Western Asia | AS | 29.31166 | 47.481766 | IRQ,SAU | Yes | KWD | Kuwaiti Dinar | .kw | 965 | M6 | KWT | ku | KW | KWT | KUW | KU | KUW | 137 | 285570 | Arabic | ar-KW,en | |||
| CYM | KY | 136 | CAYMAN ISLANDS | George Town | Americas | Caribbean | NA | 19.513469 | -80.566956 | Territory of GB | KYD | Cayman Islands Dollar | .ky | 1345 | E9 | CYM | cj | GC | CAY | CJ | CAY | 48 | 3580718 | English | en-KY | |||||
| KAZ | KZ | 398 | KAZAKHSTAN | Astana | Asia | Central Asia | AS | 48.019573 | 66.923684 | CHN,KGZ,RUS,TKM,UZB | 1 | Yes | KZT | Tenge | .kz | 76, 77 | KAZ | kz | KZ | KZ | KAZ | KZ | KAZ | 132 | 1522867 | Kazakh,Russian | kk,ru | |||
| LAO | LA | 418 | LAO PEOPLE�S DEMOCRATIC REPUBLIC | Vientiane | Asia | South-Eastern Asia | AS | 19.85627 | 102.495496 | MMR,KHM,CHN,THA,VNM | 1 | Yes | LAK | Kip | .la | 856 | LAO | ls | LA | LAO | LAO | LA | LAO | 139 | 1655842 | Lao | lo,fr,en | |||
| LBN | LB | 422 | LEBANON | Beirut | Asia | Western Asia | AS | 33.854721 | 35.862285 | ISR,SYR | Yes | LBP | Lebanese Pound | .lb | 961 | M8 | LBN | le | LB | RL | LIB | LE | LIB | 141 | 272103 | Arabic,French | ar-LB,fr-LB,en,hy | |||
| LCA | LC | 662 | SAINT LUCIA | Castries | Americas | Caribbean | NA | 13.909444 | -60.978893 | Yes | XCD | East Caribbean Dollar | .lc | 1758 | U9 | LCA | xk | LC | WL | LCA | ST | LCA | 209 | 3576468 | English | en-LC | ||||
| LIE | LI | 438 | LIECHTENSTEIN | Vaduz | Europe | Western Europe | EU | 47.166 | 9.555373 | AUT,CHE | 1 | Yes | CHF | Swiss Franc | .li | 423 | N2 | LIE | lh | FL | LIE | LS | LIE | 146 | 3042058 | German | de-LI | |||
| LKA | LK | 144 | SRI LANKA | Colombo | Asia | Southern Asia | AS | 7.873054 | 80.771797 | IND | Yes | LKR | Sri Lanka Rupee | .lk | 94 | F1 | CLN | ce | SB | CL | SRI | CE | SRI | 231 | 1227603 | Sinhala,Tamil | si,ta,en | |||
| LBR | LR | 430 | LIBERIA | Monrovia | Africa | Western Africa | AF | 6.428055 | -9.429499 | GIN,CIV,SLE | Yes | LRD | Liberian Dollar | .lr | 231 | N0 | LBR | lb | LI | LB | LBR | LI | LBR | 144 | 2275384 | English | en-LR | |||
| LSO | LS | 426 | LESOTHO | Maseru | Africa | Southern Africa | AF | -29.609988 | 28.233608 | ZAF | 1 | Yes | ZAR | South African Rand | .ls | 266 | M9 | LSO | lo | LS | LS | LES | LT | LES | 142 | 932692 | English,Sotho | en-LS,st,zu,xh | ||
| LTU | LT | 440 | LITHUANIA | Vilnius | Europe | Northern Europe | EU | 55.169438 | 23.881275 | BLR,LVA,POL,RUS | Yes | EUR | Euro | .lt | 370 | 1Q | LTU | li | LT | LT | LTU | LH | LTU | 147 | 597427 | Lithuanian | lt,ru,pl | |||
| LUX | LU | 442 | LUXEMBOURG | Luxembourg | Europe | Western Europe | EU | 49.815273 | 6.129583 | BEL,FRA,DEU | 1 | Yes | EUR | Euro | .lu | 352 | N4 | LUX | lu | BX | L | LUX | LU | LUX | 148 | 2960313 | German,French,Luxembourgish | lb,de-LU,fr-LU | ||
| LVA | LV | 428 | LATVIA | Riga | Europe | Northern Europe | EU | 56.879635 | 24.603189 | BLR,EST,LTU,RUS | Yes | EUR | Euro | .lv | 371 | 1R | LVA | lv | LV | LV | LVA | LG | LAT | 140 | 458258 | Latvian | lv,ru,lt | |||
| LBY | LY | 434 | LIBYA | Tripoli | Africa | Northern Africa | AF | 26.3351 | 17.228331 | DZA,TCD,EGY,NER,SDN,TUN | Yes | LYD | Libyan Dinar | .ly | 218 | LBY | ly | LY | LAR | LBY | LY | LBA | 145 | 2215636 | Arabic | ar-LY,it,en | ||||
| MAR | MA | 504 | MOROCCO | Rabat | Africa | Northern Africa | AF | 31.791702 | -7.09262 | DZA,ESH,ESP | Yes | MAD | Moroccan Dirham | .ma | 212 | P2 | MRC | mr | MC | MA | MAR | MO | MAR | 169 | 2542007 | Arabic,Berber | ar-MA,fr | |||
| MCO | MC | 492 | MONACO | Monaco | Europe | Western Europe | EU | 43.750298 | 7.412841 | FRA | Yes | EUR | Euro | .mc | 377 | O9 | MCO | mc | MC | MON | MN | MON | 166 | 2993457 | French | fr-MC,en,it | ||||
| MDA | MD | 498 | MOLDOVA | Chisinau | Europe | Eastern Europe | EU | 47.411631 | 28.369885 | ROU,UKR | 1 | Yes | MDL | Moldovan Leu | .md | 373 | MDA | mv | RM | MD | MDA | MD | MDA | 165 | 617790 | Moldavian | ro,ru,gag,tr | |||
| MNE | ME | 499 | MONTENEGRO | Podgorica | Europe | Southern Europe | EU | 42.708678 | 19.37439 | ALB,BIH,HRV,UNK,SRB | Yes | EUR | Euro | .me | 382 | Z5 | MNE | mo | MNE | MNE | MJ | MGO | 2647 | 3194884 | Montenegrin | sr,hu,bs,sq,hr,rom | ||||
| MAF | MF | 663 | SAINT MARTIN (FRENCH PART) | Marigot | Americas | Caribbean | NA | 18.08333333 | -63.95 | SXM | Part of FR | EUR | Euro | .gp | 590 | st | RN | 3578421 | French | fr | ||||||||||
| MDG | MG | 450 | MADAGASCAR | Antananarivo | Africa | Eastern Africa | AF | -18.766947 | 46.869107 | Yes | MGA | Malagasy Ariary | .mg | 261 | N6 | MDG | mg | MG | RM | MAD | MA | MAD | 150 | 1062947 | French,Malagasy | fr-MG,mg | ||||
| MHL | MH | 584 | MARSHALL ISLANDS | Majuro | Oceania | Micronesia | OC | 7.131474 | 171.184478 | Yes | USD | US Dollar | .mh | 692 | 1T | MHL | xe | MH | MHL | RM | MSH | 157 | 2080185 | English,Marshallese | mh,en-MH | |||||
| MKD | MK | 807 | MACEDONIA [FYROM] | Skopje | Europe | Southern Europe | EU | 41.608635 | 21.745275 | ALB,BGR,GRC,UNK,SRB | 1 | Yes | MKD | Macedonian Denar | .mk | 389 | MKD | xn | MJ | MK | MKD | MK | MKD | 241 | 718075 | Macedonian | mk,sq,tr,rmm,sr | |||
| MLI | ML | 466 | MALI | Bamako | Africa | Western Africa | AF | 17.570692 | -3.996166 | DZA,BFA,GIN,CIV,MRT,NER,SEN | 1 | Yes | XOF | CFA Franc BCEAO | .ml | 223 | O0 | MLI | ml | MI | RMM | MLI | ML | MLI | 155 | 2453866 | French | fr-ML,bm | ||
| MMR | MM | 104 | MYANMAR | Naypyidaw | Asia | South-Eastern Asia | AS | 21.913965 | 95.956223 | BGD,CHN,IND,LAO,THA | Yes | MMK | Kyat | .mm | 95 | E1 | MYA | br | BM | BUR | MYA | BM | MYA | 171 | 1327865 | Burmese | my | |||
| MNG | MN | 496 | MONGOLIA | Ulan Bator | Asia | Eastern Asia | AS | 46.862496 | 103.846656 | CHN,RUS | 1 | Yes | MNT | Tugrik | .mn | 976 | P0 | MNG | mp | MO | MGL | MNG | MG | MGL | 167 | 2029969 | Mongolian | mn,ru | ||
| MAC | MO | 446 | MACAO | Asia | Eastern Asia | AS | 22.198745 | 113.543873 | CHN | Part of CN | MOP | Macanese Pataca | .mo | 853 | MAC | MU | MAC | MC | MAC | 149 | 1821275 | Portuguese,Chinese | zh,zh-MO,pt | |||||||
| MNP | MP | 580 | NORTHERN MARIANA ISLANDS | Saipan | Oceania | Micronesia | OC | 17.33083 | 145.38469 | Commonwealth of US | USD | US Dollar | .mp | 1670 | 1V | MRA | nw | MY | USA | NMI | CQ | NMA | 185 | 4041468 | Carolinian,Chamorro,English | fil,tl,zh,ch-MP,en-MP | ||||
| MTQ | MQ | 474 | MARTINIQUE | Fort-de-France | Americas | Caribbean | NA | 14.641528 | -61.024174 | Part of FR | EUR | Euro | .mq | 596 | O2 | MRT | mq | MR | F | MTQ | MB | MRT | 158 | 3570311 | French | fr-MQ | ||||
| MRT | MR | 478 | MAURITANIA | Nouakchott | Africa | Western Africa | AF | 21.00789 | -10.940835 | DZA,MLI,SEN,ESH | Yes | MRO | Ouguiya | .mr | 222 | O3 | MTN | mu | MT | RIM | MTN | MR | MTN | 159 | 2378080 | Arabic | ar-MR,fuc,snk,fr,mey,wo | |||
| MSR | MS | 500 | MONTSERRAT | Plymouth | Americas | Caribbean | NA | 16.742498 | -62.187366 | Territory of GB | XCD | East Caribbean Dollar | .ms | 1664 | P1 | MSR | mj | MSR | MH | MNT | 168 | 3578097 | English | en-MS | ||||||
| MLT | MT | 470 | MALTA | Valletta | Europe | Southern Europe | EU | 35.937496 | 14.375416 | Yes | EUR | Euro | .mt | 356 | O1 | MLT | mm | ML | M | MLT | MT | MLT | 156 | 2562770 | English,Maltese | mt,en-MT | ||||
| MUS | MU | 480 | MAURITIUS | Port Louis | Africa | Eastern Africa | AF | -20.348404 | 57.552152 | Yes | MUR | Mauritius Rupee | .mu | 230 | O4 | MAU | mf | MA | MS | MRI | MP | MRI | 160 | 934292 | English,French,Mauritian Creole | en-MU,bho,fr | ||||
| MDV | MV | 462 | MALDIVES | Male | Asia | Southern Asia | AS | 3.202778 | 73.22068 | Yes | MVR | Rufiyaa | .mv | 960 | N9 | MLD | xc | MV | MDV | MV | MDV | 154 | 1282028 | Maldivian | dv,en | |||||
| MWI | MW | 454 | MALAWI | Lilongwe | Africa | Eastern Africa | AF | -13.254308 | 34.301525 | MOZ,TZA,ZMB | 1 | Yes | MWK | Kwacha | .mw | 265 | N7 | MWI | mw | MW | MW | MWI | MI | MAW | 152 | 927384 | English,Chewa | ny,yao,tum,swk | ||
| MEX | MX | 484 | MEXICO | Mexico City | Americas | Central America | NA | 23.634501 | -102.552784 | BLZ,GTM,USA | Yes | MXN | Mexican Peso | .mx | 52 | O5 | MEX | mx | MX | MEX | MEX | MX | MEX | 162 | 3996063 | Spanish | es-MX | |||
| MYS | MY | 458 | MALAYSIA | Kuala Lumpur | Asia | South-Eastern Asia | AS | 4.210484 | 101.975766 | BRN,IDN,THA | Yes | MYR | Malaysian Ringgit | .my | 60 | N8 | MLA | my | MS | MAL | MAS | MY | MAS | 153 | 1733045 | English,Malay | ms-MY,en,zh,ta,te,ml,pa,th | |||
| MOZ | MZ | 508 | MOZAMBIQUE | Maputo | Africa | Eastern Africa | AF | -18.665695 | 35.529562 | MWI,ZAF,SWZ,TZA,ZMB,ZWE | Yes | MZN | Mozambique Metical | .mz | 258 | P3 | MOZ | mz | MZ | MOC | MOZ | MZ | MOZ | 170 | 1036973 | Portuguese | pt-MZ,vmw | |||
| NAM | NA | 516 | NAMIBIA | Windhoek | Africa | Southern Africa | AF | -22.95764 | 18.49041 | AGO,BWA,ZAF,ZMB | NAD | Namibian Dollar | .na | 264 | Afrikaans,German,English,Herero,Khoekhoe,Kwangali,Lozi,Ndonga,Tswana | |||||||||||||||
| NCL | NC | 540 | NEW CALEDONIA | Noumea | Oceania | Melanesia | OC | -20.904305 | 165.618042 | Territory of FR | XPF | CFP Franc | .nc | 687 | 1W | NCL | nl | NC | F | NCL | NC | NCD | 178 | 2139685 | French | fr-NC | ||||
| NER | NE | 562 | NIGER | Niamey | Africa | Western Africa | AF | 17.607789 | 8.081666 | DZA,BEN,BFA,TCD,LBY,MLI,NGA | 1 | Yes | XOF | CFA Franc BCEAO | .ne | 227 | Q4 | NGR | ng | NR | RN | NIG | NG | NIG | 181 | 2440476 | French | fr-NE,ha,kr,dje | ||
| NFK | NF | 574 | NORFOLK ISLAND | Kingston | Oceania | Australia and New Zealand | OC | -29.040835 | 167.954712 | Territory of AU | AUD | Australian Dollar | .nf | 672 | Q7 | NFK | nx | NF | AUS | NFK | NF | NFI | 184 | 2155115 | English,Norfuk | en-NF | ||||
| NGA | NG | 566 | NIGERIA | Abuja | Africa | Western Africa | AF | 9.081999 | 8.675277 | BEN,CMR,TCD,NER | Yes | NGN | Naira | .ng | 234 | Q5 | NIG | nr | NI | NGR | NGA | NI | NGR | 182 | 2328926 | English | en-NG,ha,yo,ig,ff | |||
| NIC | NI | 558 | NICARAGUA | Managua | Americas | Central America | NA | 12.865416 | -85.207229 | CRI,HND | Yes | NIO | Cordoba Oro | .ni | 505 | Q3 | NCG | nq | NK | NIC | NCA | NU | NCA | 180 | 3617476 | Spanish | es-NI,en | |||
| NLD | NL | 528 | NETHERLANDS | Amsterdam | Europe | Western Europe | EU | 52.132633 | 5.291266 | BEL,DEU | Yes | EUR | Euro | .nl | 31 | P7 | HOL | ne | NL | NL | NED | NL | NED | 177 | 2750405 | Dutch | nl-NL,fy-NL | |||
| NOR | NO | 578 | NORWAY | Oslo | Europe | Northern Europe | EU | 60.472024 | 8.468946 | FIN,SWE,RUS | Yes | NOK | Norwegian Krone | .no | 47 | Q8 | NOR | no | NO | N | NOR | NO | NOR | 186 | 3144096 | Norwegian Nynorsk,Norwegian Bokm�l,Sami | no,nb,nn,se,fi | |||
| NPL | NP | 524 | NEPAL | Kathmandu | Asia | Southern Asia | AS | 28.394857 | 84.124008 | CHN,IND | 1 | Yes | NPR | Nepalese Rupee | .np | 977 | P6 | NPL | np | NP | NEP | NEP | NP | NEP | 175 | 1282988 | Nepali | ne,en | ||
| NRU | NR | 520 | NAURU | Yaren | Oceania | Micronesia | OC | -0.522778 | 166.931503 | Yes | AUD | Australian Dollar | .nr | 674 | P5 | NRU | nu | NW | NAU | NRU | NR | NRU | 173 | 2110425 | English,Nauru | na,en-NR | ||||
| NIU | NU | 570 | NIUE | Alofi | Oceania | Polynesia | OC | -19.054445 | -169.867233 | Associated with NZ | NZD | New Zealand Dollar | .nu | 683 | Q6 | NIU | xh | NZ | NIU | NE | NIU | 183 | 4036232 | English,Niuean | niu,en-NU | |||||
| NZL | NZ | 554 | NEW ZEALAND | Wellington | Oceania | Australia and New Zealand | OC | -40.900557 | 174.885971 | Yes | NZD | New Zealand Dollar | .nz | 64 | Q2 | NZL | nz | NZ | NZ | NZL | NZ | NZL | 179 | 2186224 | English,M_ori,New Zealand Sign Language | en-NZ,mi | ||||
| OMN | OM | 512 | OMAN | Muscat | Asia | Western Asia | AS | 21.512583 | 55.923255 | SAU,ARE,YEM | Yes | OMR | Rial Omani | .om | 968 | P4 | OMA | mk | OM | OMA | MU | OMA | 187 | 286963 | Arabic | ar-OM,en,bal,ur | ||||
| PAN | PA | 591 | PANAMA | Panama City | Americas | Central America | NA | 8.537981 | -80.782127 | COL,CRI | Yes | PAB | Panamanian Balboa | .pa | 507 | R1 | PNR | pn | PM | PA | PAN | PM | PAN | 191 | 3703430 | Spanish | es-PA,en | |||
| PER | PE | 604 | PERU | Lima | Americas | South America | SA | -9.189967 | -75.015152 | BOL,BRA,CHL,COL,ECU | Yes | PEN | Nuevo Sol | .pe | 51 | R5 | PRU | pe | PR | PE | PER | PE | PER | 195 | 3932488 | Aymara,Quechua,Spanish | es-PE,qu,ay | |||
| PYF | PF | 258 | FRENCH POLYNESIA | Papeete | Oceania | Polynesia | OC | -17.679742 | -149.406843 | Territory of FR | XPF | CFP Franc | .pf | 689 | I4 | OCE | fp | PF | F | TAH | FP | FPO | 87 | 4030656 | French | fr-PF,ty | ||||
| PNG | PG | 598 | PAPUA NEW GUINEA | Port Moresby | Oceania | Melanesia | OC | -6.314993 | 143.95555 | IDN | Yes | PGK | Kina | .pg | 675 | R2 | PNG | pp | NG | PNG | PNG | PP | PNG | 192 | 2088628 | English,Hiri Motu,Tok Pisin | en-PG,ho,meu,tpi | |||
| PHL | PH | 608 | PHILIPPINES | Manila | Asia | South-Eastern Asia | AS | 12.879721 | 121.774017 | Yes | PHP | Philippine Peso | .ph | 63 | R6 | PHL | ph | PH | RP | PHI | RP | PHI | 196 | 1694008 | English,Filipino | tl,en-PH,fil | ||||
| PAK | PK | 586 | PAKISTAN | Islamabad | Asia | Southern Asia | AS | 30.375321 | 69.345116 | AFG,CHN,IND,IRN | Yes | PKR | Pakistan Rupee | .pk | 92 | R0 | PAK | pk | PK | PK | PAK | PK | PAK | 188 | 1168579 | English,Urdu | ur-PK,en-PK,pa,sd,ps,brh | |||
| POL | PL | 616 | POLAND | Warsaw | Europe | Eastern Europe | EU | 51.919438 | 19.145136 | BLR,CZE,DEU,LTU,RUS,SVK,UKR | Yes | PLN | Zloty | .pl | 48 | R9 | POL | pl | PL | PL | POL | PL | POL | 198 | 798544 | Polish | pl | |||
| SPM | PM | 666 | SAINT PIERRE AND MIQUELON | Saint-Pierre | Americas | Northern America | NA | 46.941936 | -56.27111 | Part of FR | EUR | Euro | .pm | 508 | V0 | SPM | xl | FP | F | SPM | SB | SPM | 210 | 3424932 | French | fr-PM | ||||
| PCN | PN | 612 | PITCAIRN | Adamstown | Oceania | Polynesia | OC | -24.703615 | -127.439308 | Territory of GB | NZD | New Zealand Dollar | .pn | 64 | R8 | PTC | pc | PT | PCN | PC | 197 | 4030699 | English | en-PN | ||||||
| PRI | PR | 630 | PUERTO RICO | San Juan | Americas | Caribbean | NA | 18.220833 | -66.590149 | Commonwealth of US | USD | US Dollar | .pr | 1787, 1939 | PR | PTR | pr | PU | USA | PUR | RQ | PUR | 200 | 4566966 | English,Spanish | en-PR,es-PR | ||||
| PSE | PS | 275 | PALESTINE, STATE OF | East Jerusalem | Asia | Western Asia | AS | 31.952162 | 35.233154 | ISR,EGY,JOR | In contention | ILS | Israeli New Shekel | .ps | 970 | gz,wj | PLE | GZ,WE | PLE | 91267 | 6254930 | Arabic | ar-PS | administrative center is Ramallah | ||||||
| PRT | PT | 620 | PORTUGAL | Lisbon | Europe | Southern Europe | EU | 39.399872 | -8.224454 | ESP | Yes | EUR | Euro | .pt | 351 | S1 | POR | po | PO | P | POR | PO | POR | 199 | 2264397 | Portuguese | pt-PT,mwl | |||
| PLW | PW | 585 | PALAU | Ngerulmud | Oceania | Micronesia | OC | 7.51498 | 134.58252 | Yes | USD | US Dollar | .pw | 680 | 1Y | PLW | pw | PLW | PS | PLW | 189 | 1559582 | English,Palauan | pau,sov,en-PW,tox,ja,fil,zh | ||||||
| PRY | PY | 600 | PARAGUAY | Asuncion | Americas | South America | SA | -23.442503 | -58.443832 | ARG,BOL,BRA | 1 | Yes | PYG | Guarani | .py | 595 | R4 | PRG | py | PY | PY | PAR | PA | PAR | 194 | 3437598 | Guaran�,Spanish | es-PY,gn | ||
| QAT | QA | 634 | QATAR | Doha | Asia | Western Asia | AS | 25.354826 | 51.183884 | SAU | Yes | QAR | Qatari Rial | .qa | 974 | S3 | QAT | qa | QT | Q | QAT | QA | QAT | 201 | 289688 | Arabic | ar-QA,es | |||
| REU | RE | 638 | R�UNION | Saint-Denis | Africa | Eastern Africa | AF | -21.115141 | 55.536384 | Part of FR | EUR | Euro | .re | 262 | REU | re | RE | F | REU | RE | REU | 206 | 935317 | French | fr-RE | |||||
| ROU | RO | 642 | ROMANIA | Bucharest | Europe | Eastern Europe | EU | 45.943161 | 24.96676 | BGR,HUN,MDA,SRB,UKR | Yes | RON | New Romanian Leu | .ro | 40 | S5 | ROU | rm | RO | RO | ROU | RO | ROU | 203 | 798549 | Romanian | ro,hu,rom | |||
| SRB | RS | 688 | SERBIA | Belgrade | Europe | Southern Europe | EU | 44.016521 | 21.005859 | BIH,BGR,HRV,HUN,UNK,MKD,MNE,ROU | 1 | Yes | RSD | Serbian Dinar | .rs | 381 | Z2 | SRB | rb | YG | SRB | SRB | RI,KV | SRB | 2648 | 6290252 | Serbian | sr,hu,bs,rom | ||
| RUS | RU | 643 | RUSSIAN FEDERATION | Moscow | Europe | Eastern Europe | EU | 61.52401 | 105.318756 | AZE,BLR,CHN,EST,FIN,GEO,KAZ,PRK,LVA,LTU,MNG,NOR,POL,UKR | Yes | RUB | Russian Ruble | .ru | 7 | 1Z | RUS | ru | RS | RUS | RUS | RS | RUS | 204 | 2017370 | Russian | ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,tut,kbd,krc,ava,sah,nog | |||
| RWA | RW | 646 | RWANDA | Kigali | Africa | Eastern Africa | AF | -1.940278 | 29.873888 | BDI,COD,TZA,UGA | 1 | Yes | RWF | Rwanda Franc | .rw | 250 | S6 | RRW | rw | RW | RWA | RWA | RW | RWA | 205 | 49518 | English,French,Kinyarwanda | rw,en-RW,fr-RW,sw | ||
| SAU | SA | 682 | SAUDI ARABIA | Riyadh | Asia | Western Asia | AS | 23.885942 | 45.079162 | IRQ,JOR,KWT,OMN,QAT,ARE,YEM | Yes | SAR | Saudi Riyal | .sa | 966 | T0 | ARS | su | SD | SA | KSA | SA | KSA | 215 | 102358 | Arabic | ar-SA | |||
| SLB | SB | 90 | SOLOMON ISLANDS | Honiara | Oceania | Melanesia | OC | -9.64571 | 160.156194 | Yes | SBD | Solomon Islands Dollar | .sb | 677 | D7 | SLM | bp | SO | SOL | BP | SOL | 225 | 2103350 | English | en-SB,tpi | |||||
| SYC | SC | 690 | SEYCHELLES | Victoria | Africa | Eastern Africa | AF | -4.679574 | 55.491977 | Yes | SCR | Seychelles Rupee | .sc | 248 | T2 | SEY | se | SC | SY | SEY | SE | SEY | 220 | 241170 | Seychellois Creole,English,French | en-SC,fr-SC | ||||
| SDN | SD | 729 | SUDAN | Khartoum | Africa | Northern Africa | AF | 12.862807 | 30.217636 | CAF,TCD,EGY,ERI,ETH,LBY,SSD | Yes | SDG | Sudanese Pound | .sd | 249 | V2 | SDN | sj | SU | SUD | SUD | SU | SUD | 40764 | 366755 | Arabic,English | ar-SD,en,fia | |||
| SWE | SE | 752 | SWEDEN | Stockholm | Europe | Northern Europe | EU | 60.128161 | 18.643501 | FIN,NOR | Yes | SEK | Swedish Krona | .se | 46 | V7 | S | sw | SN | S | SWE | SW | SWE | 236 | 2661886 | Swedish | sv-SE,se,sma,fi-SE | |||
| SGP | SG | 702 | SINGAPORE | Singapore | Asia | South-Eastern Asia | AS | 1.352083 | 103.819836 | Yes | SGD | Singapore Dollar | .sg | 65 | U0 | SNG | si | SR | SGP | SIN | SN | SIN | 222 | 1880251 | Mandarin,English,Malay,Tamil | cmn,en-SG,ms-SG,ta-SG,zh-SG | ||||
| SHN | SH | 654 | SAINT HELENA, ASCENSION AND TRISTAN DA CUNH | Jamestown | Africa | Western Africa | AF | -24.143474 | -10.030696 | Territory of GB | SHP | Saint Helena Pound | .sh | 290 | SHN | xj | HE | SHN | SH | HEL | 207 | 3370751 | en-SH | |||||||
| SVN | SI | 705 | SLOVENIA | Ljubljana | Europe | Southern Europe | EU | 46.151241 | 14.995463 | AUT,HRV,ITA,HUN | Yes | EUR | Euro | .si | 386 | 2A | SVN | xv | LJ | SLO | SVN | SI | SLO | 224 | 3190538 | Slovene | sl,sh | |||
| SJM | SJ | 744 | SVALBARD AND JAN MAYEN | Longyearbyen | Europe | Northern Europe | EU | 77.553604 | 23.670272 | Territory of NO | NOK | Norwegian Krone | .sj | 47 | NOR | SZ | SV,JN | 234 | 607072 | Norwegian | no,ru | |||||||||
| SVK | SK | 703 | SLOVAKIA | Bratislava | Europe | Eastern Europe | EU | 48.669026 | 19.699024 | AUT,CZE,HUN,POL,UKR | 1 | Yes | EUR | Euro | .sk | 421 | 2B | SVK | xo | SQ | SK | SVK | LO | SVK | 223 | 3057568 | Slovak | sk,hu | ||
| SLE | SL | 694 | SIERRA LEONE | Freetown | Africa | Western Africa | AF | 8.460555 | -11.779889 | GIN,LBR | Yes | SLL | Leone | .sl | 232 | T8 | SRL | sl | SL | WAL | SLE | SL | SLE | 221 | 2403846 | English | en-SL,men,tem | |||
| SMR | SM | 674 | SAN MARINO | City of San Marino | Europe | Southern Europe | EU | 43.94236 | 12.457777 | ITA | 1 | Yes | EUR | Euro | .sm | 378 | S8 | SMR | sm | RSM | SMR | SM | SMR | 213 | 3168068 | Italian | it-SM | |||
| SEN | SN | 686 | SENEGAL | Dakar | Africa | Western Africa | AF | 14.497401 | -14.452362 | GMB,GIN,GNB,MLI,MRT | Yes | XOF | CFA Franc BCEAO | .sn | 221 | T1 | SEN | sg | SG | SN | SEN | SG | SEN | 217 | 2245662 | French | fr-SN,wo,fuc,mnk | |||
| SOM | SO | 706 | SOMALIA | Mogadishu | Africa | Eastern Africa | AF | 5.152149 | 46.199616 | DJI,ETH,KEN | Yes | SOS | Somali Shilling | .so | 252 | U1 | SOM | so | SI | SO | SOM | SO | SOM | 226 | 51537 | Arabic,Somali | so-SO,ar-SO,it,en-SO | |||
| SUR | SR | 740 | SURINAME | Paramaribo | Americas | South America | SA | 3.919305 | -56.027783 | BRA,GUF,GUY | Yes | SRD | Surinam Dollar | .sr | 597 | V3 | SUR | sr | SM | SME | SUR | NS | SUR | 233 | 3382998 | Dutch | nl-SR,en,srn,hns,jv | |||
| SSD | SS | 728 | SOUTH SUDAN | Juba | Africa | Middle Africa | AF | 4.85 | 31.6 | CAF,COD,ETH,KEN,SDN,UGA | 1 | Yes | SSP | South Sudanese Pound | .ss | 211 | SSD | sd | OD | 7909807 | English | en | ||||||||
| STP | ST | 678 | SAO TOME AND PRINCIPE | Sao Tome | Africa | Middle Africa | AF | 0.18636 | 6.613081 | Yes | STD | Dobra | .st | 239 | S9 | STP | sf | TP | STP | TP | STP | 214 | 2410758 | Portuguese | pt-ST | |||||
| SLV | SV | 222 | EL SALVADOR | San Salvador | Americas | Central America | NA | 13.794185 | -88.89653 | GTM,HND | Yes | USD | US Dollar | .sv | 503 | H3 | SLV | es | ES | ES | SLV | ES | ESA | 75 | 3585968 | Spanish | es-SV | |||
| SXM | SX | 534 | SINT MAARTEN (DUTCH PART) | Philipsburg | Americas | Caribbean | NA | 18.033333 | -63.05 | MAF | Part of NL | ANG | Netherlands Antillean Guilder | .sx | 1721 | sn | NN | 7609695 | English,French,Dutch | nl,en | ||||||||||
| SYR | SY | 760 | SYRIAN ARAB REPUBLIC | Damascus | Asia | Western Asia | AS | 34.802075 | 38.996815 | IRQ,ISR,JOR,LBN,TUR | Yes | SYP | Syrian Pound | .sy | 963 | V9 | SYR | sy | SY | SYR | SYR | SY | SYR | 238 | 163843 | Arabic | ar-SY,ku,hy,arc,fr,en | |||
| SWZ | SZ | 748 | SWAZILAND | Lobamba | Africa | Southern Africa | AF | -26.522503 | 31.465866 | MOZ,ZAF | 1 | Yes | SZL | Lilangeni | .sz | 268 | V6 | SWZ | sq | SV | SD | SWZ | WZ | SWZ | 235 | 934841 | English,Swazi | en-SZ,ss-SZ | administrative capital is Mbabane | |
| TCA | TC | 796 | TURKS AND CAICOS ISLANDS | Cockburn Town | Americas | Caribbean | NA | 21.694025 | -71.797928 | Territory of GB | USD | US Dollar | .tc | 1649 | W7 | TCA | tc | TI | TCA | TK | TKS | 251 | 3576916 | English | en-TC | |||||
| TCD | TD | 148 | CHAD | N'Djamena | Africa | Middle Africa | AF | 15.454166 | 18.732207 | CMR,CAF,LBY,NER,NGA,SSD | 1 | Yes | XAF | CFA Franc BEAC | .td | 235 | F2 | TCD | cd | CD | TCH | CHA | CD | CHA | 50 | 2434508 | Arabic,French | fr-TD,ar-TD,sre | ||
| ATF | TF | 260 | FRENCH SOUTHERN TERRITORIES | Port-aux-Francais | Africa | South-Eastern Africa | AF | -49.280366 | 69.348557 | Territory of FR | EUR | Euro | .tf | 262 | fs | F | FS | 88 | 1546748 | French | fr | |||||||||
| TGO | TG | 768 | TOGO | Lome | Africa | Western Africa | AF | 8.619543 | 0.824782 | BEN,BFA,GHA | Yes | XOF | CFA Franc BCEAO | .tg | 228 | W2 | TGO | tg | TG | TG | TOG | TO | TOG | 243 | 2363686 | French | fr-TG,ee,hna,kbp,dag,ha | |||
| THA | TH | 764 | THAILAND | Bangkok | Asia | South-Eastern Asia | AS | 15.870032 | 100.992541 | MMR,KHM,LAO,MYS | Yes | THB | Baht | .th | 66 | W1 | THA | th | TH | T | THA | TH | THA | 240 | 1605651 | Thai | th,en | |||
| TJK | TJ | 762 | TAJIKISTAN | Dushanbe | Asia | Central Asia | AS | 38.861034 | 71.276093 | AFG,CHN,KGZ,UZB | 1 | Yes | TJS | Somoni | .tj | 992 | 2D | TJK | ta | TA | TJ | TJK | TI | TJK | 239 | 1220409 | Russian,Tajik | tg,ru | ||
| TKL | TK | 772 | TOKELAU | Oceania | Polynesia | OC | -8.967363 | -171.855881 | Territory of NZ | NZD | New Zealand Dollar | .tk | 690 | W3 | TKL | tl | TK | NZ | TKL | TL | 244 | 4031074 | English,Samoan,Tokelauan | tkl,en-TK | undetermined capital | |||||
| TLS | TL | 626 | TIMOR-LESTE | Dili | Asia | South-Eastern Asia | OC | -8.874217 | 125.727539 | IDN | Yes | USD | US Dollar | .tl | 670 | Z3 | TLS | em | TM | TLS | TT | TLS | 242 | 1966436 | Portuguese,Tetum | tet,pt-TL,id,en | ||||
| TKM | TM | 795 | TURKMENISTAN | Ashgabat | Asia | Central Asia | AS | 38.969719 | 59.556278 | AFG,IRN,KAZ,UZB | 1 | Yes | TMT | Turkmenistan New Manat | .tm | 993 | 2E | TKM | tk | TR | TM | TKM | TX | TKM | 250 | 1218197 | Russian,Turkmen | tk,ru,uz | ||
| TUN | TN | 788 | TUNISIA | Tunis | Africa | Northern Africa | AF | 33.886917 | 9.537499 | DZA,LBY | Yes | TND | Tunisian Dinar | .tn | 216 | W6 | TUN | ti | TS | TN | TUN | TS | TUN | 248 | 2464461 | Arabic | ar-TN,fr | |||
| TON | TO | 776 | TONGA | Nuku'alofa | Oceania | Polynesia | OC | -21.178986 | -175.198242 | Yes | TOP | Pa�anga | .to | 676 | W4 | TON | to | TO | TGA | TN | TGA | 245 | 4032283 | English,Tongan | to,en-TO | |||||
| TUR | TR | 792 | TURKEY | Ankara | Asia | Western Asia | AS | 38.963745 | 35.243322 | ARM,AZE,BGR,GEO,GRC,IRN,IRQ,SYR | Yes | TRY | Turkish Lira | .tr | 90 | W8 | TUR | tu | TU | TR | TUR | TU | TUR | 249 | 298795 | Turkish | tr-TR,ku,diq,az,av | |||
| TTO | TT | 780 | TRINIDAD AND TOBAGO | Port of Spain | Americas | Caribbean | NA | 10.691803 | -61.222503 | Yes | TTD | Trinidad and Tobago Dollar | .tt | 1868 | W5 | TRD | tr | TD | TT | TRI | TD | TTO | 246 | 3573591 | English | en-TT,hns,fr,es,zh | ||||
| TUV | TV | 798 | TUVALU | Funafuti | Oceania | Polynesia | OC | -7.109535 | 177.64933 | Yes | AUD | Australian Dollar | .tv | 688 | 2G | TUV | tv | TV | TUV | TV | TUV | 252 | 2110297 | English,Tuvaluan | tvl,en,sm,gil | |||||
| TWN | TW | 158 | TAIWAN | Taipei | Asia | Eastern Asia | AS | 23.69781 | 120.960515 | Yes | TWD | New Taiwan Dollar | .tw | 886 | ch | RC | TPE | TW | TPE | 925 | 1668284 | Mandarin | zh-TW,zh,nan,hak | |||||||
| TZA | TZ | 834 | TANZANIA | Dodoma | Africa | Eastern Africa | AF | -6.369028 | 34.888822 | BDI,COD,KEN,MWI,MOZ,RWA,UGA,ZMB | Yes | TZS | Tanzanian Shilling | .tz | 255 | TZA | tz | TN | EAT | TAN | TZ | TAN | 257 | 149590 | English,Swahili | sw-TZ,en,ar | ||||
| UKR | UA | 804 | UKRAINE | Kiev | Europe | Eastern Europe | EU | 48.379433 | 31.16558 | BLR,HUN,MDA,POL,ROU,RUS,SVK | Yes | UAH | Hryvnia | .ua | 380 | 2H | UKR | un | UR | UA | UKR | UP | UKR | 254 | 690791 | Russian,Ukrainian | uk,ru-UA,rom,pl,hu | |||
| UGA | UG | 800 | UGANDA | Kampala | Africa | Eastern Africa | AF | 1.373333 | 32.290275 | COD,KEN,RWA,SSD,TZA | 1 | Yes | UGX | Uganda Shilling | .ug | 256 | W9 | UGA | ug | UG | EAU | UGA | UG | UGA | 253 | 226074 | English,Swahili | en-UG,lg,sw,ar | ||
| UMI | UM | 581 | U.S. MINOR OUTLYING ISLANDS | Americas | Northern America | OC | 16.73694444 | -169.5238889 | Territories of US | USD | US Dollar | .um | 0 | ji,xf,wk,uc,up | USA | FQ,HQ,DQ,JQ,KQ,MQ,BQ,LQ,WQ | 5854968 | English | en-UM | |||||||||||
| USA | US | 840 | UNITED STATES | Washington D.C. | Americas | Northern America | NA | 37.09024 | -95.712891 | CAN,MEX | Yes | USD | US Dollar | .us | 1 | USA | xxu | US | USA | USA | US | USA | 259 | 6252001 | English | en-US,es-US,haw,fr | ||||
| URY | UY | 858 | URUGUAY | Montevideo | Americas | South America | SA | -32.522779 | -55.765835 | ARG,BRA | Yes | UYU | Uruguayan Peso | .uy | 598 | X3 | URG | uy | UY | ROU | URU | UY | URU | 260 | 3439705 | Spanish | es-UY | |||
| UZB | UZ | 860 | UZBEKISTAN | Tashkent | Asia | Central Asia | AS | 41.377491 | 64.585262 | AFG,KAZ,KGZ,TJK,TKM | 1 | Yes | UZS | Uzbekistan Sum | .uz | 998 | 2K | UZB | uz | UZ | UZ | UZB | UZ | UZB | 261 | 1512440 | Russian,Uzbek | uz,ru,tg | ||
| VAT | VA | 336 | VATICAN CITY | Vatican City | Europe | Southern Europe | EU | 41.902916 | 12.453389 | ITA | 1 | Yes | EUR | Euro | .va | 379 | CVA | vc | V | VAT | VT | 110 | 3164670 | Italian,Latin | la,it,fr | |||||
| VCT | VC | 670 | SAINT VINCENT AND THE GRENADINES | Kingstown | Americas | Caribbean | NA | 12.984305 | -61.287228 | Yes | XCD | East Caribbean Dollar | .vc | 1784 | V1 | VCT | xm | VG | WV | VIN | VC | VIN | 211 | 3577815 | English | en-VC,fr | ||||
| VEN | VE | 862 | VENEZUELA | Caracas | Americas | South America | SA | 6.42375 | -66.58973 | BRA,COL,GUY | Yes | VEF | Venezuelan Bol�var | .ve | 58 | VEN | ve | VN | YV | VEN | VE | VEN | 263 | 3625428 | Spanish | es-VE | ||||
| VGB | VG | 92 | BRITISH VIRGIN ISLANDS | Road Town | Americas | Caribbean | NA | 18.420695 | -64.639968 | Territory of GB | USD | US Dollar | .vg | 1284 | VRG | vb | VI | BVI | VGB | VI | IVB | 39 | 3577718 | English | en-VG | |||||
| VIR | VI | 850 | U.S. VIRGIN ISLANDS | Charlotte Amalie | Americas | Caribbean | NA | 18.335765 | -64.896335 | Territory of US | USD | US Dollar | .vi | 1340 | VIR | vi | VI | USA | VIR | VQ | ISV | 258 | 4796775 | English | en-VI | |||||
| VNM | VN | 704 | VIETNAM | Hanoi | Asia | South-Eastern Asia | AS | 14.058324 | 108.277199 | KHM,CHN,LAO | Yes | VND | Dong | .vn | 84 | Q1 | VTN | vm | VS | VN | VIE | VM | VIE | 264 | 1562822 | Vietnamese | vi,en,fr,zh,km | |||
| VUT | VU | 548 | VANUATU | Port Vila | Oceania | Melanesia | OC | -15.376706 | 166.959158 | Yes | VUV | Vatu | .vu | 678 | 2L | VUT | nn | NV | VAN | NH | VAN | 262 | 2134431 | Bislama,English,French | bi,en-VU,fr-VU | |||||
| WLF | WF | 876 | WALLIS AND FUTUNA | Mata-Utu | Oceania | Polynesia | OC | -13.768752 | -177.156097 | Territory of FR | XPF | CFP Franc | .wf | 681 | WAL | wf | FW | F | WLF | WF | WAF | 266 | 4034749 | French | wls,fud,fr-WF | |||||
| WSM | WS | 882 | SAMOA | Apia | Oceania | Polynesia | OC | -13.759029 | -172.104629 | Yes | WST | Tala | .ws | 685 | Y0 | SMO | ws | ZM | WS | SAM | WS | SAM | 212 | 4034894 | English,Samoan | sm,en-WS | ||||
| YEM | YE | 887 | YEMEN | Sanaa | Asia | Western Asia | AS | 15.552727 | 48.516388 | OMN,SAU | Yes | YER | Yemeni Rial | .ye | 967 | T7 | YEM | ye | YE | YAR | YEM | YM | YEM | 269 | 69543 | Arabic | ar-YE | |||
| MYT | YT | 175 | MAYOTTE | Mamoudzou | Africa | Eastern Africa | AF | -12.8275 | 45.166244 | Part of FR | EUR | Euro | .yt | 262 | 2P | MYT | ot | MYT | MF | MAY | 161 | 1024031 | French | fr-YT | ||||||
| ZAF | ZA | 710 | SOUTH AFRICA | Pretoria | Africa | Southern Africa | AF | -30.559482 | 22.937506 | BWA,LSO,MOZ,NAM,SWZ,ZWE | Yes | ZAR | Rand | .za | 27 | T3 | AFS | sa | ZA | ZA | RSA | SF | RSA | 227 | 953987 | Afrikaans,English,Southern Ndebele,Northern Sotho,Southern Sotho,Swazi,Tswana,Tsonga,Venda,Xhosa,Zulu | zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr | |||
| ZMB | ZM | 894 | ZAMBIA | Lusaka | Africa | Eastern Africa | AF | -13.133897 | 27.849332 | AGO,BWA,COD,MWI,MOZ,NAM,TZA,ZWE | 1 | Yes | ZMW | Zambian Kwacha | .zm | 260 | Y4 | ZMB | za | ZB | Z | ZAM | ZA | ZAM | 270 | 895949 | English | en-ZM,bem,loz,lun,lue,ny,toi | ||
| ZWE | ZW | 716 | ZIMBABWE | Harare | Africa | Eastern Africa | AF | -19.015438 | 29.154857 | BWA,MOZ,ZAF,ZMB | 1 | Yes | ZWL | Zimbabwe Dollar | .zw | 263 | Y5 | ZWE | rh | ZW | ZW | ZIM | ZI | ZIM | 271 | 878675 | Chibarwe,English,Kalanga,Khoisan,Ndau,Northern Ndebele,Chewa,Shona,Sotho,Tonga,Tswana,Tsonga,Venda,Xhosa,Zimbabwean Sign Language | en-ZW,sn,nr,nd | ✔ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.budhash.common.location; | |
| import com.budhash.common.utils.Converter; | |
| import org.slf4j.Logger; | |
| import org.slf4j.LoggerFactory; | |
| import java.io.IOException; | |
| import java.nio.file.Files; | |
| import java.nio.file.Path; | |
| import java.nio.file.Paths; | |
| import java.util.*; | |
| import java.util.stream.Collectors; | |
| import java.util.stream.Stream; | |
| /** | |
| * Created by budha on 7/20/16. | |
| */ | |
| public enum Country { | |
| XX, AND, ARE, AFG, ATG, AIA, ALB, ARM, AGO, ATA, ARG, ASM, AUT, AUS, ABW, ALA, AZE, BIH, BRB, BGD, BEL, BFA, BGR, BHR, BDI, BEN, BLM, BMU, BRN, BOL, BES, BRA, BHS, BTN, BVT, BWA, BLR, BLZ, CAN, CCK, COD, CAF, COG, CHE, CIV, COK, CHL, CMR, CHN, COL, CRI, CUB, CPV, CUW, CXR, CYP, CZE, DEU, DJI, DNK, DMA, DOM, DZA, ECU, EST, EGY, ESH, ERI, ESP, ETH, FIN, FJI, FLK, FSM, FRO, FRA, GAB, GBR, GRD, GEO, GUF, GGY, GHA, GIB, GRL, GMB, GIN, GLP, GNQ, GRC, SGS, GTM, GUM, GNB, GUY, HKG, HMD, HND, HRV, HTI, HUN, IDN, IRL, ISR, IMN, IND, IOT, IRQ, IRN, ISL, ITA, JEY, JAM, JOR, JPN, KEN, KGZ, KHM, KIR, COM, KNA, PRK, KOR, KWT, CYM, KAZ, LAO, LBN, LCA, LIE, LKA, LBR, LSO, LTU, LUX, LVA, LBY, MAR, MCO, MDA, MNE, MAF, MDG, MHL, MKD, MLI, MMR, MNG, MAC, MNP, MTQ, MRT, MSR, MLT, MUS, MDV, MWI, MEX, MYS, MOZ, NAM, NCL, NER, NFK, NGA, NIC, NLD, NOR, NPL, NRU, NIU, NZL, OMN, PAN, PER, PYF, PNG, PHL, PAK, POL, SPM, PCN, PRI, PSE, PRT, PLW, PRY, QAT, REU, ROU, SRB, RUS, RWA, SAU, SLB, SYC, SDN, SWE, SGP, SHN, SVN, SJM, SVK, SLE, SMR, SEN, SOM, SUR, SSD, STP, SLV, SXM, SYR, SWZ, TCA, TCD, ATF, TGO, THA, TJK, TKL, TLS, TKM, TUN, TON, TUR, TTO, TUV, TWN, TZA, UKR, UGA, UMI, USA, URY, UZB, VAT, VCT, VEN, VGB, VIR, VNM, VUT, WLF, WSM, YEM, MYT, ZAF, ZMB, ZWE; | |
| private final static Logger LOGGER = LoggerFactory.getLogger(Country.class); | |
| private static final CountryRecords COUNTRY_RECORD_MAP; | |
| static { | |
| COUNTRY_RECORD_MAP = new CountryRecords("src/main/resources/location/countries.csv"); | |
| COUNTRY_RECORD_MAP.process(); | |
| } | |
| public String iso2() { | |
| return get(CountrySchema.ISO2); | |
| } | |
| public Integer isoNum() { | |
| return get(CountrySchema.ISONUM); | |
| } | |
| public String countryName() { | |
| return get(CountrySchema.COUNTRY); | |
| } | |
| public String capital() { | |
| return get(CountrySchema.CAPITAL); | |
| } | |
| public String region() { | |
| return get(CountrySchema.REGION); | |
| } | |
| public String subRegion() { | |
| return get(CountrySchema.SUBREGION); | |
| } | |
| public Continent continent() { | |
| return get(CountrySchema.CONTINENT); | |
| } | |
| public GeoCoord coordinates() { | |
| return get(CountrySchema.GEOCOORD); | |
| } | |
| public String independenceStatus() { | |
| return get(CountrySchema.INDEPENDENT); | |
| } | |
| public Currency currency() { | |
| return get(CountrySchema.CURRENCY); | |
| } | |
| public String tld() { | |
| return get(CountrySchema.TLD); | |
| } | |
| public List<Integer> callingCode() { | |
| return get(CountrySchema.CALLINGCODE); | |
| } | |
| public String code(final CodeType type) { | |
| switch (type) { | |
| case EDGAR: | |
| return get(CountrySchema.EDGAR); | |
| case ITU: | |
| return get(CountrySchema.ITU); | |
| case MARC: | |
| return get(CountrySchema.MARC); | |
| case WMO: | |
| return get(CountrySchema.WMO); | |
| case DS: | |
| return get(CountrySchema.DS); | |
| case FIFA: | |
| return get(CountrySchema.FIFA); | |
| case FIPS: | |
| return get(CountrySchema.FIPS); | |
| case IOC: | |
| return get(CountrySchema.IOC); | |
| case GAUL: | |
| return get(CountrySchema.GAUL); | |
| default: | |
| return ""; | |
| } | |
| } | |
| public List<String> languages() { | |
| return get(CountrySchema.LANGUAGES); | |
| } | |
| public List<String> languageCodes() { | |
| return get(CountrySchema.LANGUAGECODE); | |
| } | |
| public enum CodeType { | |
| EDGAR, ITU, MARC, WMO, DS, FIFA, FIPS, IOC, GAUL; | |
| } | |
| protected <T> T get(final CountrySchema column) { | |
| return (T) COUNTRY_RECORD_MAP.get(this).get(column); | |
| } | |
| private static interface CsvColumn { | |
| int getColumnNumber(); | |
| Class getType(); | |
| Object getDefaultValue(); | |
| Boolean isCollection(); | |
| } | |
| private static interface CsvSchema { | |
| List<CsvColumn> getColumns(); | |
| } | |
| enum CountrySchema implements CsvColumn, CsvSchema { | |
| ISO3(0, String.class, ""), | |
| ISO2(1, String.class, ""), | |
| ISONUM(2, Integer.class, -1), | |
| COUNTRY(3, String.class, Country.XX), | |
| CAPITAL(4, String.class, ""), | |
| REGION(5, String.class, ""), | |
| SUBREGION(6, String.class, ""), | |
| CONTINENT(7, Continent.class, ""), | |
| LATITUDE(8, Double.class, 0.00), | |
| LONGITUDE(9, Double.class, 0.00), | |
| //BORDERS(10, Country.class, Arrays.asList(), true), | |
| //LANDLOCKED(11, Boolean.class, false), | |
| INDEPENDENT(12, String.class, ""), | |
| CURRENCYCODE(13, String.class, ""), | |
| CURRENCYNAME(14, String.class, ""), | |
| TLD(15, String.class, ""), | |
| CALLINGCODE(16, Integer.class, Arrays.asList(), true), | |
| EDGAR(17, String.class, ""), | |
| ITU(18, String.class, ""), | |
| MARC(19, String.class, ""), | |
| WMO(20, String.class, ""), | |
| DS(21, String.class, ""), | |
| FIFA(22, String.class, ""), | |
| FIPS(23, String.class, ""), | |
| IOC(24, String.class, ""), | |
| GAUL(25, String.class, ""), | |
| GEONAMEID(26, String.class, ""), | |
| LANGUAGES(27, String.class, Arrays.asList(), true), | |
| LANGUAGECODE(28, String.class, Arrays.asList(), true), | |
| NOTES(-1, String.class, ""), | |
| GEOCOORD(-1, GeoCoord.class, GeoCoord.NA()), //this is generated | |
| CURRENCY(-1, Currency.class, Currency.getInstance(Locale.US)); //this is generated | |
| final int columnNumber; | |
| final Class type; | |
| final Object defaultValue; | |
| final Boolean isCollection; | |
| CountrySchema(final int columnNumber, final Class type, final Object defaultValue) { | |
| this(columnNumber, type, defaultValue, false); | |
| } | |
| CountrySchema(final int columnNumber, final Class type, final Object defaultValue, final Boolean isCollection) { | |
| this.columnNumber = columnNumber; | |
| this.type = type; | |
| this.defaultValue = defaultValue; | |
| this.isCollection = isCollection; | |
| } | |
| @Override | |
| public int getColumnNumber() { | |
| return columnNumber; | |
| } | |
| @Override | |
| public Class getType() { | |
| return type; | |
| } | |
| @Override | |
| public Object getDefaultValue() { | |
| return defaultValue; | |
| } | |
| @Override | |
| public Boolean isCollection() { | |
| return isCollection; | |
| } | |
| @Override | |
| public List<CsvColumn> getColumns() { | |
| return Arrays.asList(CountrySchema.values()); | |
| } | |
| } | |
| private static class CsvParser { | |
| private static final String CSV_PATTERN = ",(?=([^\"]*\"[^\"]*\")*[^\"]*$)"; | |
| private static final String DEFAULT_LIST_DILIMER = ","; | |
| private final CsvSchema schema; | |
| public CsvParser(final CsvSchema schema) { | |
| this.schema = schema; | |
| } | |
| public CsvSchema getSchema() { | |
| return schema; | |
| } | |
| public static <T> List<T> parseList(final CsvColumn column, final String value) { | |
| return Converter.parseList(value, column.getType()); | |
| } | |
| public static <T> T parseValue(final CsvColumn column, final String value) { | |
| Optional optVal = Converter.parseValue(value, column.getType()); | |
| //return (C) optVal.get(); | |
| return (T) (optVal.isPresent() ? optVal.get() : column.getType().cast(column.getDefaultValue())); | |
| } | |
| public <C extends CsvColumn, V> Map<C, V> processRow(final String row) { | |
| final List<String> recordRow = Arrays.asList(row.split(CSV_PATTERN)); | |
| final Map<C, V> rowMap = new HashMap<>(); | |
| for (CsvColumn column : getSchema().getColumns()) { | |
| if (column.getColumnNumber() < 0) | |
| continue; | |
| if(column.getColumnNumber() < recordRow.size()) { | |
| final String cellItem = recordRow.get(column.getColumnNumber()); | |
| final Object value = | |
| column.isCollection() ? parseList(column, cellItem.replaceAll("\"","")) : parseValue(column, cellItem); | |
| rowMap.put((C) column, (V) value); | |
| }else{ | |
| rowMap.put((C) column,(V)column.getDefaultValue()); | |
| } | |
| } | |
| return rowMap; | |
| } | |
| } | |
| private static class CountryRecords { | |
| Map<Country, Map<CsvColumn, Object>> bag = new HashMap<>(); | |
| public Map<CsvColumn, Object> get(final Country country) { | |
| return bag.get(country); | |
| } | |
| public <T> T get(final Country country, final CsvColumn column) { | |
| return (T) column.getType().cast(bag.get(column).get(column)); | |
| } | |
| final Path path; | |
| final CsvParser parser; | |
| public CountryRecords(final String path) { | |
| this.path = Paths.get(path); | |
| this.parser = new CsvParser(CountrySchema.ISO2); | |
| } | |
| protected Map<CsvColumn, Object> processRow(final String rowString){ | |
| final Map<CsvColumn, Object> csvRow = parser.processRow(rowString); | |
| try { | |
| csvRow.put(CountrySchema.GEOCOORD, new GeoCoord((double) csvRow.get(CountrySchema.LATITUDE), (double) csvRow.get(CountrySchema.LONGITUDE))); | |
| final String curr = (String) csvRow.get(CountrySchema.CURRENCYCODE); | |
| if (null != curr && !curr.isEmpty()) | |
| csvRow.put(CountrySchema.CURRENCY, Currency.getInstance(curr)); | |
| }catch (final Exception ex){ | |
| LOGGER.error("error parsing row: {}", rowString); | |
| } | |
| return csvRow; | |
| } | |
| public void process() { | |
| List<String> rows = new ArrayList<>(); | |
| bag.clear(); | |
| try (Stream<String> stream = Files.lines(this.path)) { | |
| bag = stream | |
| .filter(s -> null!=s && !s.isEmpty()) | |
| .filter(s -> !s.trim().startsWith("#")) | |
| .map(this::processRow) | |
| .filter(m->null!=m && !m.isEmpty()) | |
| .collect( | |
| HashMap::new, | |
| (map,e)->{ | |
| final Country ctry = Country.valueOf((String) e.get(CountrySchema.ISO3)); | |
| map.put(ctry, e); | |
| }, | |
| Map::putAll | |
| ); | |
| } catch (final IOException e) { | |
| e.printStackTrace(); | |
| } | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class CountryTest { | |
| private final static Logger LOGGER = LoggerFactory.getLogger(CountryTest.class); | |
| private static final String CSV_PATTERN = ",(?=([^\"]*\"[^\"]*\")*[^\"]*$)"; | |
| @Test | |
| public void testCountryEnum() throws Exception { | |
| String fileName = "src/main/resources/location/countries.csv"; | |
| List<String> rows = new ArrayList<>(); | |
| List<List<String>> countryData = new ArrayList<>(); | |
| try (Stream<String> stream = Files.lines(Paths.get(fileName))) { | |
| countryData = stream | |
| .filter(s -> null!=s && !s.isEmpty()) | |
| .filter(line -> !line.trim().startsWith("#")) | |
| .collect( | |
| ArrayList::new, | |
| (list,e)->{ | |
| if (null != e && !e.isEmpty()) | |
| list.add(Arrays.asList(e.split(CSV_PATTERN))); | |
| }, | |
| ArrayList::addAll | |
| ); | |
| } catch (IOException e) { | |
| e.printStackTrace(); | |
| } | |
| for(List<String> row : countryData){ | |
| Country ctry = Country.valueOf(row.get(0)); | |
| validate(ctry, row); | |
| } | |
| } | |
| private void validate(final Country country, final List<String> row) { | |
| LOGGER.info(""); | |
| LOGGER.info("validating : {}", country); | |
| assertThat(country.iso2()).isEqualTo(row.get(1)); | |
| LOGGER.info("validating : isoNum -> {} = {}", country.isoNum(), row.get(2)); | |
| assertThat(country.isoNum()).isEqualTo(Integer.valueOf(row.get(2))); | |
| LOGGER.info("validating : capital -> {} = {}", country.capital(), row.get(4)); | |
| assertThat(country.capital()).isEqualTo(row.get(4)); | |
| LOGGER.info("validating : region -> {} = {}", country.region(), row.get(5)); | |
| assertThat(country.region()).isEqualTo(row.get(5)); | |
| LOGGER.info("validating : subRegion -> {} = {}", country.region(), row.get(6)); | |
| assertThat(country.subRegion()).isEqualTo(row.get(6)); | |
| LOGGER.info("validating : continent -> {} = {}", country.continent(), row.get(7)); | |
| assertThat(country.continent()).isEqualTo(Continent.valueOf(row.get(7))); | |
| LOGGER.info("validating : coordinates -> {} = ({}:{})", country.coordinates(), Double.parseDouble(row.get(8)),Double.parseDouble(row.get(9))); | |
| assertThat(country.coordinates()).isEqualTo(new GeoCoord(Double.parseDouble(row.get(8)),Double.parseDouble(row.get(9)))); | |
| LOGGER.info("validating : independenceStatus -> {} = {}", country.independenceStatus(), row.get(12)); | |
| assertThat(country.independenceStatus()).isEqualTo(row.get(12)); | |
| LOGGER.info("validating : currency -> {} = {}", country.currency(), row.get(13)); | |
| if(!StringUtils.isBlank(row.get(13))) | |
| assertThat(country.currency()).isEqualTo(Currency.getInstance(row.get(13))); | |
| else | |
| assertThat(country.currency()).isNull(); | |
| LOGGER.info("validating : tld -> {} = {}", country.tld(), row.get(15)); | |
| assertThat(country.tld()).isEqualTo(row.get(15)); | |
| LOGGER.info("validating : callingCode {} = {}", country.callingCode(), row.get(16)); | |
| assertThat(country.callingCode()).containsAll(Converter.toList(Arrays.asList(row.get(16).replaceAll("\"","").split(",")), Integer.class)); | |
| LOGGER.info("validating : EDGAR -> {} = {}", country.code(Country.CodeType.EDGAR), row.get(17)); | |
| assertThat(country.code(Country.CodeType.EDGAR)).isEqualTo(row.get(17)); | |
| LOGGER.info("validating : ITU -> {} = {}", country.code(Country.CodeType.ITU), row.get(18)); | |
| assertThat(country.code(Country.CodeType.ITU)).isEqualTo(row.get(18)); | |
| LOGGER.info("validating : MARC -> {} = {}", country.code(Country.CodeType.MARC), row.get(19)); | |
| assertThat(country.code(Country.CodeType.MARC)).isEqualTo(row.get(19)); | |
| LOGGER.info("validating : WMO -> {} = {}", country.code(Country.CodeType.WMO), row.get(20)); | |
| assertThat(country.code(Country.CodeType.WMO)).isEqualTo(row.get(20)); | |
| LOGGER.info("validating : DS -> {} = {}", country.code(Country.CodeType.DS), row.get(21)); | |
| assertThat(country.code(Country.CodeType.DS)).isEqualTo(row.get(21)); | |
| LOGGER.info("validating : FIFA -> {} = {}", country.code(Country.CodeType.FIFA), row.get(22)); | |
| assertThat(country.code(Country.CodeType.FIFA)).isEqualTo(row.get(22)); | |
| LOGGER.info("validating : FIPS -> {} = {}", country.code(Country.CodeType.FIPS), row.get(23)); | |
| assertThat(country.code(Country.CodeType.FIPS)).isEqualTo(row.get(23)); | |
| LOGGER.info("validating : IOC -> {} = {}", country.code(Country.CodeType.IOC), row.get(24)); | |
| assertThat(country.code(Country.CodeType.IOC)).isEqualTo(row.get(24)); | |
| LOGGER.info("validating : IOC -> {} = {}", country.code(Country.CodeType.GAUL), row.get(25)); | |
| assertThat(country.code(Country.CodeType.GAUL)).isEqualTo(row.get(25)); | |
| LOGGER.info("validating : languages -> {} = {}", country.languages(), row.get(27)); | |
| assertThat(country.languages()).containsAll(Converter.toList(Arrays.asList(row.get(27).replaceAll("\"","").split(",")), String.class)); | |
| if(row.size() > 28) { | |
| LOGGER.info("validating : languageCodes -> {} = {}", country.languageCodes(), row.get(28)); | |
| assertThat(country.languageCodes()).containsAll( | |
| Converter.toList(Arrays.asList(row.get(28).replaceAll("\"", "").split(",")), String.class)); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment