<!DOCTYPE html>
<!--
 *
 * Copyright 2015 Open Networking Laboratory
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
-->
<html lang="en">
<head>
    <title>2-Letter, 3-Letter, Country Codes for All Countries in the World</title>
    <meta charset="utf-8">
    <script charset="utf-8" src="../../tp/jquery-2.1.1.min.js"></script>
</head>
<body>

<style type="text/css" scoped>
    body {
        font-family: Helvetica Neue, Helvetica, Arial, sans-serif ;
        background-color: #eef;
    }
    .mainContent {
        margin: auto;
        width: 800px;
        background-color: #ddf;
        padding: 8px;
    }

    table {
        margin: auto;
    }
    th {
        font-style: italic;
        text-align: left;
        background-color: #aad;
        color: #66c;
        padding: 4px;
    }
    td {
        padding: 4px;
    }
    td.code {
        font-family: monospace;
        font-size: 120%;
    }
    td.num {
        text-align: right;
    }
    tr:nth-child(even) {
        background-color: #dde;
    }
    tr:nth-child(odd) {
        background-color: #eef;
    }

</style>

<div class="content">
    <div class="mainContent">
        <div class="miscTxt">
            <header>
                <h1>Complete List of Country Codes </h1>
            </header>
            <p>
                The 2-letter codes shown below are supplied by the ISO
                (<i>International Organization for Standardization</i>).
                It bases its list of country names and abbreviations on
                the list of names published by the United Nations.
                The UN also uses 3-letter codes, and numerical codes
                to identify nations.
            </p>

            <table>
                <thead>
                <tr>
                    <th> Country </th>
                    <th> A2 (ISO) </th>
                    <th> A3 (UN) </th>
                    <th> NUM (UN) </th>
                </tr>
                </thead>
                <tbody id="codes-body">
                </tbody>
            </table>
        </div>
    </div>
</div>

<script type="text/javascript">

    var data = [
    [ 'Afghanistan', 'AF', 'AFG', 4 ],
    [ 'Albania', 'AL', 'ALB', 8 ],
    [ 'Algeria', 'DZ', 'DZA', 12 ],
    [ 'American Samoa', 'AS', 'ASM', 16 ],
    [ 'Andorra', 'AD', 'AND', 20 ],
    [ 'Angola', 'AO', 'AGO', 24 ],
    [ 'Anguilla', 'AI', 'AIA', 660 ],
    [ 'Antarctica', 'AQ', 'ATA', 10 ],
    [ 'Antigua and Barbuda', 'AG', 'ATG', 28 ],
    [ 'Argentina', 'AR', 'ARG', 32 ],
    [ 'Armenia', 'AM', 'ARM', 51 ],
    [ 'Aruba', 'AW', 'ABW', 533 ],
    [ 'Australia', 'AU', 'AUS', 36 ],
    [ 'Austria', 'AT', 'AUT', 40 ],
    [ 'Azerbaijan', 'AZ', 'AZE', 31 ],
    [ 'Bahamas', 'BS', 'BHS', 44 ],
    [ 'Bahrain', 'BH', 'BHR', 48 ],
    [ 'Bangladesh', 'BD', 'BGD', 50 ],
    [ 'Barbados', 'BB', 'BRB', 52 ],
    [ 'Belarus', 'BY', 'BLR', 112 ],
    [ 'Belgium', 'BE', 'BEL', 56 ],
    [ 'Belize', 'BZ', 'BLZ', 84 ],
    [ 'Benin', 'BJ', 'BEN', 204 ],
    [ 'Bermuda', 'BM', 'BMU', 60 ],
    [ 'Bhutan', 'BT', 'BTN', 64 ],
    [ 'Bolivia', 'BO', 'BOL', 68 ],
    [ 'Bonaire', 'BQ', 'BES', 535 ],
    [ 'Bosnia and Herzegovina', 'BA', 'BIH', 70 ],
    [ 'Botswana', 'BW', 'BWA', 72 ],
    [ 'Bouvet Island', 'BV', 'BVT', 74 ],
    [ 'Brazil', 'BR', 'BRA', 76 ],
    [ 'British Indian Ocean Territory', 'IO', 'IOT', 86 ],
    [ 'Brunei Darussalam', 'BN', 'BRN', 96 ],
    [ 'Bulgaria', 'BG', 'BGR', 100 ],
    [ 'Burkina Faso', 'BF', 'BFA', 854 ],
    [ 'Burundi', 'BI', 'BDI', 108 ],
    [ 'Cambodia', 'KH', 'KHM', 116 ],
    [ 'Cameroon', 'CM', 'CMR', 120 ],
    [ 'Canada', 'CA', 'CAN', 124 ],
    [ 'Cape Verde', 'CV', 'CPV', 132 ],
    [ 'Cayman Islands', 'KY', 'CYM', 136 ],
    [ 'Central African Republic', 'CF', 'CAF', 140 ],
    [ 'Chad', 'TD', 'TCD', 148 ],
    [ 'Chile', 'CL', 'CHL', 152 ],
    [ 'China', 'CN', 'CHN', 156 ],
    [ 'Christmas Island', 'CX', 'CXR', 162 ],
    [ 'Cocos (Keeling) Islands', 'CC', 'CCK', 166 ],
    [ 'Colombia', 'CO', 'COL', 170 ],
    [ 'Comoros', 'KM', 'COM', 174 ],
    [ 'Congo', 'CG', 'COG', 178 ],
    [ 'Democratic Republic of the Congo', 'CD', 'COD', 180 ],
    [ 'Cook Islands', 'CK', 'COK', 184 ],
    [ 'Costa Rica', 'CR', 'CRI', 188 ],
    [ 'Croatia', 'HR', 'HRV', 191 ],
    [ 'Cuba', 'CU', 'CUB', 192 ],
    [ 'CuraÃ§ao', 'CW', 'CUW', 531 ],
    [ 'Cyprus', 'CY', 'CYP', 196 ],
    [ 'Czech Republic', 'CZ', 'CZE', 203 ],
    [ 'CÃ´te dIvoire', 'CI', 'CIV', 384 ],
    [ 'Denmark', 'DK', 'DNK', 208 ],
    [ 'Djibouti', 'DJ', 'DJI', 262 ],
    [ 'Dominica', 'DM', 'DMA', 212 ],
    [ 'Dominican Republic', 'DO', 'DOM', 214 ],
    [ 'Ecuador', 'EC', 'ECU', 218 ],
    [ 'Egypt', 'EG', 'EGY', 818 ],
    [ 'El Salvador', 'SV', 'SLV', 222 ],
    [ 'Equatorial Guinea', 'GQ', 'GNQ', 226 ],
    [ 'Eritrea', 'ER', 'ERI', 232 ],
    [ 'Estonia', 'EE', 'EST', 233 ],
    [ 'Ethiopia', 'ET', 'ETH', 231 ],
    [ 'Falkland Islands (Malvinas)', 'FK', 'FLK', 238 ],
    [ 'Faroe Islands', 'FO', 'FRO', 234 ],
    [ 'Fiji', 'FJ', 'FJI', 242 ],
    [ 'Finland', 'FI', 'FIN', 246 ],
    [ 'France', 'FR', 'FRA', 250 ],
    [ 'French Guiana', 'GF', 'GUF', 254 ],
    [ 'French Polynesia', 'PF', 'PYF', 258 ],
    [ 'French Southern Territories', 'TF', 'ATF', 260 ],
    [ 'Gabon', 'GA', 'GAB', 266 ],
    [ 'Gambia', 'GM', 'GMB', 270 ],
    [ 'Georgia', 'GE', 'GEO', 268 ],
    [ 'Germany', 'DE', 'DEU', 276 ],
    [ 'Ghana', 'GH', 'GHA', 288 ],
    [ 'Gibraltar', 'GI', 'GIB', 292 ],
    [ 'Greece', 'GR', 'GRC', 300 ],
    [ 'Greenland', 'GL', 'GRL', 304 ],
    [ 'Grenada', 'GD', 'GRD', 308 ],
    [ 'Guadeloupe', 'GP', 'GLP', 312 ],
    [ 'Guam', 'GU', 'GUM', 316 ],
    [ 'Guatemala', 'GT', 'GTM', 320 ],
    [ 'Guernsey', 'GG', 'GGY', 831 ],
    [ 'Guinea', 'GN', 'GIN', 324 ],
    [ 'Guinea-Bissau', 'GW', 'GNB', 624 ],
    [ 'Guyana', 'GY', 'GUY', 328 ],
    [ 'Haiti', 'HT', 'HTI', 332 ],
    [ 'Heard Island and McDonald Mcdonald Islands', 'HM', 'HMD', 334 ],
    [ 'Holy See (Vatican City State)', 'VA', 'VAT', 336 ],
    [ 'Honduras', 'HN', 'HND', 340 ],
    [ 'Hong Kong', 'HK', 'HKG', 344 ],
    [ 'Hungary', 'HU', 'HUN', 348 ],
    [ 'Iceland', 'IS', 'ISL', 352 ],
    [ 'India', 'IN', 'IND', 356 ],
    [ 'Indonesia', 'ID', 'IDN', 360 ],
    [ 'Iran, Islamic Republic of', 'IR', 'IRN', 364 ],
    [ 'Iraq', 'IQ', 'IRQ', 368 ],
    [ 'Ireland', 'IE', 'IRL', 372 ],
    [ 'Isle of Man', 'IM', 'IMN', 833 ],
    [ 'Israel', 'IL', 'ISR', 376 ],
    [ 'Italy', 'IT', 'ITA', 380 ],
    [ 'Jamaica', 'JM', 'JAM', 388 ],
    [ 'Japan', 'JP', 'JPN', 392 ],
    [ 'Jersey', 'JE', 'JEY', 832 ],
    [ 'Jordan', 'JO', 'JOR', 400 ],
    [ 'Kazakhstan', 'KZ', 'KAZ', 398 ],
    [ 'Kenya', 'KE', 'KEN', 404 ],
    [ 'Kiribati', 'KI', 'KIR', 296 ],
    [ 'Korea, Democratic People\'s Republic of', 'KP', 'PRK', 408 ],
    [ 'Korea, Republic of', 'KR', 'KOR', 410 ],
    [ 'Kuwait', 'KW', 'KWT', 414 ],
    [ 'Kyrgyzstan', 'KG', 'KGZ', 417 ],
    [ 'Lao People\'s Democratic Republic', 'LA', 'LAO', 418 ],
    [ 'Latvia', 'LV', 'LVA', 428 ],
    [ 'Lebanon', 'LB', 'LBN', 422 ],
    [ 'Lesotho', 'LS', 'LSO', 426 ],
    [ 'Liberia', 'LR', 'LBR', 430 ],
    [ 'Libya', 'LY', 'LBY', 434 ],
    [ 'Liechtenstein', 'LI', 'LIE', 438 ],
    [ 'Lithuania', 'LT', 'LTU', 440 ],
    [ 'Luxembourg', 'LU', 'LUX', 442 ],
    [ 'Macao', 'MO', 'MAC', 446 ],
    [ 'Macedonia, the Former Yugoslav Republic of', 'MK', 'MKD', 807 ],
    [ 'Madagascar', 'MG', 'MDG', 450 ],
    [ 'Malawi', 'MW', 'MWI', 454 ],
    [ 'Malaysia', 'MY', 'MYS', 458 ],
    [ 'Maldives', 'MV', 'MDV', 462 ],
    [ 'Mali', 'ML', 'MLI', 466 ],
    [ 'Malta', 'MT', 'MLT', 470 ],
    [ 'Marshall Islands', 'MH', 'MHL', 584 ],
    [ 'Martinique', 'MQ', 'MTQ', 474 ],
    [ 'Mauritania', 'MR', 'MRT', 478 ],
    [ 'Mauritius', 'MU', 'MUS', 480 ],
    [ 'Mayotte', 'YT', 'MYT', 175 ],
    [ 'Mexico', 'MX', 'MEX', 484 ],
    [ 'Micronesia, Federated States of', 'FM', 'FSM', 583 ],
    [ 'Moldova, Republic of', 'MD', 'MDA', 498 ],
    [ 'Monaco', 'MC', 'MCO', 492 ],
    [ 'Mongolia', 'MN', 'MNG', 496 ],
    [ 'Montenegro', 'ME', 'MNE', 499 ],
    [ 'Montserrat', 'MS', 'MSR', 500 ],
    [ 'Morocco', 'MA', 'MAR', 504 ],
    [ 'Mozambique', 'MZ', 'MOZ', 508 ],
    [ 'Myanmar', 'MM', 'MMR', 104 ],
    [ 'Namibia', 'NA', 'NAM', 516 ],
    [ 'Nauru', 'NR', 'NRU', 520 ],
    [ 'Nepal', 'NP', 'NPL', 524 ],
    [ 'Netherlands', 'NL', 'NLD', 528 ],
    [ 'New Caledonia', 'NC', 'NCL', 540 ],
    [ 'New Zealand', 'NZ', 'NZL', 554 ],
    [ 'Nicaragua', 'NI', 'NIC', 558 ],
    [ 'Niger', 'NE', 'NER', 562 ],
    [ 'Nigeria', 'NG', 'NGA', 566 ],
    [ 'Niue', 'NU', 'NIU', 570 ],
    [ 'Norfolk Island', 'NF', 'NFK', 574 ],
    [ 'Northern Mariana Islands', 'MP', 'MNP', 580 ],
    [ 'Norway', 'NO', 'NOR', 578 ],
    [ 'Oman', 'OM', 'OMN', 512 ],
    [ 'Pakistan', 'PK', 'PAK', 586 ],
    [ 'Palau', 'PW', 'PLW', 585 ],
    [ 'Palestine, State of', 'PS', 'PSE', 275 ],
    [ 'Panama', 'PA', 'PAN', 591 ],
    [ 'Papua New Guinea', 'PG', 'PNG', 598 ],
    [ 'Paraguay', 'PY', 'PRY', 600 ],
    [ 'Peru', 'PE', 'PER', 604 ],
    [ 'Philippines', 'PH', 'PHL', 608 ],
    [ 'Pitcairn', 'PN', 'PCN', 612 ],
    [ 'Poland', 'PL', 'POL', 616 ],
    [ 'Portugal', 'PT', 'PRT', 620 ],
    [ 'Puerto Rico', 'PR', 'PRI', 630 ],
    [ 'Qatar', 'QA', 'QAT', 634 ],
    [ 'Romania', 'RO', 'ROU', 642 ],
    [ 'Russian Federation', 'RU', 'RUS', 643 ],
    [ 'Rwanda', 'RW', 'RWA', 646 ],
    [ 'Reunion', 'RE', 'REU', 638 ],
    [ 'Saint Barthalemy', 'BL', 'BLM', 652 ],
    [ 'Saint Helena', 'SH', 'SHN', 654 ],
    [ 'Saint Kitts and Nevis', 'KN', 'KNA', 659 ],
    [ 'Saint Lucia', 'LC', 'LCA', 662 ],
    [ 'Saint Martin (French part)', 'MF', 'MAF', 663 ],
    [ 'Saint Pierre and Miquelon', 'PM', 'SPM', 666 ],
    [ 'Saint Vincent and the Grenadines', 'VC', 'VCT', 670 ],
    [ 'Samoa', 'WS', 'WSM', 882 ],
    [ 'San Marino', 'SM', 'SMR', 674 ],
    [ 'Sao Tome and Principe', 'ST', 'STP', 678 ],
    [ 'Saudi Arabia', 'SA', 'SAU', 682 ],
    [ 'Senegal', 'SN', 'SEN', 686 ],
    [ 'Serbia', 'RS', 'SRB', 688 ],
    [ 'Seychelles', 'SC', 'SYC', 690 ],
    [ 'Sierra Leone', 'SL', 'SLE', 694 ],
    [ 'Singapore', 'SG', 'SGP', 702 ],
    [ 'Sint Maarten (Dutch part)', 'SX', 'SXM', 534 ],
    [ 'Slovakia', 'SK', 'SVK', 703 ],
    [ 'Slovenia', 'SI', 'SVN', 705 ],
    [ 'Solomon Islands', 'SB', 'SLB', 90 ],
    [ 'Somalia', 'SO', 'SOM', 706 ],
    [ 'South Africa', 'ZA', 'ZAF', 710 ],
    [ 'South Georgia and the South Sandwich Islands', 'GS', 'SGS', 239 ],
    [ 'South Sudan', 'SS', 'SSD', 728 ],
    [ 'Spain', 'ES', 'ESP', 724 ],
    [ 'Sri Lanka', 'LK', 'LKA', 144 ],
    [ 'Sudan', 'SD', 'SDN', 729 ],
    [ 'Suriname', 'SR', 'SUR', 740 ],
    [ 'Svalbard and Jan Mayen', 'SJ', 'SJM', 744 ],
    [ 'Swaziland', 'SZ', 'SWZ', 748 ],
    [ 'Sweden', 'SE', 'SWE', 752 ],
    [ 'Switzerland', 'CH', 'CHE', 756 ],
    [ 'Syrian Arab Republic', 'SY', 'SYR', 760 ],
    [ 'Taiwan, Province of China', 'TW', 'TWN', 158 ],
    [ 'Tajikistan', 'TJ', 'TJK', 762 ],
    [ 'United Republic of Tanzania', 'TZ', 'TZA', 834 ],
    [ 'Thailand', 'TH', 'THA', 764 ],
    [ 'Timor-Leste', 'TL', 'TLS', 626 ],
    [ 'Togo', 'TG', 'TGO', 768 ],
    [ 'Tokelau', 'TK', 'TKL', 772 ],
    [ 'Tonga', 'TO', 'TON', 776 ],
    [ 'Trinidad and Tobago', 'TT', 'TTO', 780 ],
    [ 'Tunisia', 'TN', 'TUN', 788 ],
    [ 'Turkey', 'TR', 'TUR', 792 ],
    [ 'Turkmenistan', 'TM', 'TKM', 795 ],
    [ 'Turks and Caicos Islands', 'TC', 'TCA', 796 ],
    [ 'Tuvalu', 'TV', 'TUV', 798 ],
    [ 'Uganda', 'UG', 'UGA', 800 ],
    [ 'Ukraine', 'UA', 'UKR', 804 ],
    [ 'United Arab Emirates', 'AE', 'ARE', 784 ],
    [ 'United Kingdom', 'GB', 'GBR', 826 ],
    [ 'United States', 'US', 'USA', 840 ],
    [ 'United States Minor Outlying Islands', 'UM', 'UMI', 581 ],
    [ 'Uruguay', 'UY', 'URY', 858 ],
    [ 'Uzbekistan', 'UZ', 'UZB', 860 ],
    [ 'Vanuatu', 'VU', 'VUT', 548 ],
    [ 'Venezuela', 'VE', 'VEN', 862 ],
    [ 'Viet Nam', 'VN', 'VNM', 704 ],
    [ 'British Virgin Islands', 'VG', 'VGB', 92 ],
    [ 'US Virgin Islands', 'VI', 'VIR', 850 ],
    [ 'Wallis and Futuna', 'WF', 'WLF', 876 ],
    [ 'Western Sahara', 'EH', 'ESH', 732 ],
    [ 'Yemen', 'YE', 'YEM', 887 ],
    [ 'Zambia', 'ZM', 'ZMB', 894 ],
    [ 'Zimbabwe', 'ZW', 'ZWE', 716 ],
    [ 'Aland Islands', 'AX', 'ALA', 248 ]
    ];

    var bod = $('#codes-body');

    function addRow(name, a2, a3, num) {
        bod.append('<tr>' +
                '<td>'+ name + '</td>' +
                '<td class="code">'+ a2 + '</td>' +
                '<td class="code">'+ a3 + '</td>' +
                '<td class="num">'+ num + '</td>' +
                '</tr>');
    }

    function loadRows() {
        data.forEach(function (d) {
            if (d.length) {
                addRow(d[0], d[1], d[2], d[3]);
            }
        });
    }

    loadRows();
</script>

</body>
</html>
