The group/country identifiers for each "country" are:
|0/1||English - (UK, US, Australia, NZ, Canada,South Africa, Zimbabwe) [Ireland, Puerto Rico, Swaziland]|
|2||French (France, Belgium, Canada, Switzerland)[and Luxembourg]|
|3||German (Germany, Austria, Switzerland)|
|5||USSR [Now identified as Russian Federation, including these countries, many of which also have other codes: Azerbaijan, Tajikistan, Turkmenistan, Uzbekistan, Armenia (9930), Belarus (985), Estonia (9985), Georgia (99928), Kazakhstan (9965), Kyrgyzstan (9967), Latvia (9984), Lithuania (9986), Moldova (9975), Ukraine (966)]|
|80||Czechoslovakia [Czech Republic and Slovakia]|
|81||India (see also 93)|
|86||Yugoslavia [Yugoslavia and Bosnia and Herzegovina (9958), Croatia (953), Macedonia (9989),Slovenia (961)]|
|88||Italian (Italy, Switzerland)|
|93||India (see also 81)|
|957||Taiwan [see also 986]|
|967||Malaysia (see also 983)|
|968||Mexico (see also 970)|
|970||Mexico (see also 968)|
|981||Singapore (see also 9971)|
|983||Malaysia (see also 967)|
|986||Taiwan [see also 957; new]|
|9954||Morocco (see also 9981))|
|9955||Lithuania (See also 9986)|
|9958||Bosnia and Herzegovina|
|9968||Costa Rica (see also 9977)|
|9971||Singapore (see also 981)|
|9976||Tanzania (see also 9987)|
|9977||Costa Rica (see also 9968)|
|9980||Papua New Guinea|
|9981||Morocco [see also 9954]|
|9986||Lithuania [see also 9955]|
|9987||Tanzania (see also 9976)|
|99904||Netherlands Antilles [Aruba, Neth. Antilles]|
|99909||Malta [see also 99932]|
|99913||Andorra (see also 99920)|
|99917||Brunei [Brunei Darussalam]|
|99920||Andorra (see also 99913)|
|99932||Malta (see also 99909)|
Position of the first digit (or space) -- if the first digit is 0-7, the first separator goes between the 1st and 2nd characters. If it's an 8, it goes between the 2nd and 3rd characters.
If the first two characters are 90-93 the separator goes between the 2nd and 3rd characters. If it's 95, it goes between the 3rd and 4th characters (that is, if the first three characters are 950-959). If the first two characters are 94, it's an invalid ISBN.
For instance, for the largest publishers you could make this calculation -- going from the back, one character for the check digit, 6 for one million titles, and in English-speaking countries, 0 or 1 for the group/country identifier. That leaves 2 digits for the publisher code.
So you might imagine that there are 100 possible publisher codes that could be assigned one million title codes. However, only the first 20 (00-19) have been reserved for such large publishers.
Thus if the first three characters are 015, you know that in fact the first two hyphens should appear as 0-15- ... There are no smaller publishers whose publisher code begins with a 1, and no largest ones that begin with a 2 or greater.
Thus in English we know that:
|Country||Publisher ID||If number ranges are between:||Insert hyphen after the:||Block Size|
That is, for English-speaking countries, we know where the
middle hyphen goes because we can tell how long the publisher
identifier is by its makeup. The second hyphen goes between
the 3rd and 4th characters if the ISBN begins 000-019; between
the 4th and 5th characters if it begins 020-069 [which is to say,
begins 0200-0699]; and so on.
CueCat Scripts Book Search ISBN directory ISBN.java