The LCID (Locale Identifier) is a numeric identifier used by Windows (and therefore by Classic ASP in VBScript and JScript) to define the cultural and linguistic rules applicable to the execution of your code, when it must process data related to:
The LCID is neither a language nor a country. Indeed, the same language can be used in several countries with sometimes notable or subtle differences. In the same way, the population of a single country may speak several languages. This reality therefore justifies the definition of multiple LCIDs for the same language. Windows LCIDs are constructed based on a LANGID (language) + a SUBLANG (variant / script).
There are several ways to specify the LCID that your ASP site, session, or script uses:
SetLocale(),Session.LCID in your script,Response.LCID in your script.Although recognized by Windows, note that not all LCIDs are immediately usable: some require the installation of additional language packages on the relevant Windows Server system before they can be implemented. To see the list of available LCIDs click here.
You can verify that the LCID you specified has been correctly applied by using the GetLocale() function as follows:
<%
'Apply LCID 1036 (French)
SetLocale(1036)
'If the LCID matches:
if (GetLocale() = 1036) then
Response.Write "Valid LCID"
'If the LCID is different:
else
Response.Write "LCID used as a replacement : " & GetLocale()
end if
%>If the LCID is valid and recognized, but not installed on the system, the Classic ASP runtime engine silently fails to apply the LCID but does not raise an explicit error: it then applies either the LCID defined by default in IIS for your site (if different from 0), or the default LCID currently in effect on the Windows Server system if that also fails.
If you specify an unsupported LCID (lines highlighted in yellow), the Classic ASP runtime engine generally raises an explicit error, as shown in the following code snippet:
<%
'-------------------------
'Assign an invalid LCID (via "SetLocale")
SetLocale(98765)
'The following error is raised:
' 0x800A01BF
' Object doesn't support current locale setting: 'SetLocale'
'-------------------------
'Assign an invalid LCID (via "Session")
Session.LCID = 98765
'The following error is raised:
' 0x80004005 (ASP 0219)
' SessionID
' The specified LCID is not available.
'-------------------------
'Assign an invalid LCID (via "Response")
Response.LCID = 98765
'The following error is raised:
' 0x80004005 (ASP 0219)
' Response object
' The specified LCID is not available.
%>The LCID does not have the same scope depending on where you specify it. You can use these differences to your advantage in order to apply exceptions to previously defined rules, so that a LCID is used only in certain portions of your code, meaning it applies only to specific elements or objects.
| Declaration mode | Scope | Persistence | Recommended usage |
|---|---|---|---|
| IIS > ASP > LCID | 1. Application | Permanent | Default value |
Session.LCID | 2. Session | Multiple requests | User culture |
SetLocale() | 3. Thread | Request | Temporary adjustment |
Response.LCID | 4. Response | Request | Specific output |
These different LCID declaration modes are detailed below, listed in order of scope.
Session.LCID, Response.LCID and the thread1036 (French)<%
'Global locale ID configuration at the session level
Session.LCID = 1036 'French
'Perform certain actions with LCID 1036 (French)
Response.Write FormatDateTime(Now(), vbShortDate)
'Locale exception: Retrieve the active locale ID and then replace it
' previousLocale receives the active locale ID (1036) from Session.LCID.
' Note : SetLocale() does not change Session.LCID
Dim previousLocale : previousLocale = SetLocale(1033) 'English
'Perform processing in the now active locale ID (1033)
Response.Write FormatDateTime(Now(), vbLongDate)
'Restore the thread's previous locale ID (1036)
SetLocale previousLocale
%><%
'Global configuration of the locale ID at the session level
Session.LCID = 1036 'French
'Perform certain actions with LCID 1036 (French)
Response.Write FormatDateTime(Now(), vbShortDate)
'Now replace the locale ID at the session level with 1033
Session.LCID = 1033 'English
'Perform the following actions in the now active locale ID (1033)
Response.Write FormatDateTime(Now(), vbLongDate)
%><%
'Global locale ID configuration at the session level
Session.LCID = 1036 'French
'Perform certain actions with LCID 1036 (French)
Response.Write FormatDateTime(Now(), vbShortDate)
'Locale exception: Retrieve the active locale ID and then replace it
' previousLocale receives the active locale ID (1036) from Session.LCID.
' Note : Response.LCID() does not change Session.LCID
Dim previousLocale : previousLocale = GetLocale() 'French (1036)
Response.LCID = 1033 'Anglais
'Return a date to the now active locale ID (1033)
Response.Write FormatDateTime(Now(), vbLongDate)
%>The LCID is a Windows convention (32 bits), historically composed of a language identifier and a region identifier. It therefore notably influences functions such as CDate, FormatDateTime, FormatNumber, FormatCurrency, InStr, StrComp, LCase, etc (non-exhaustive list). In practice, the critical point in development scenarios is rarely the display, but rather the upstream stages, namely reading, parsing, and calculations. The lack of standardization of thousands and decimal separators in numbers is a common pitfall that can cause errors during insertions into your databases.
Running the same Classic ASP code on two different servers with different regional settings can therefore generate divergent results. This is why it is recommended, on the one hand, to set the default LCID in the IIS properties, and on the other hand to specify this LCID in your ASP source code before each operation involving reading, calculating, and rendering textual, numeric, and date/time data.
You can define and modify the LCID at any time via SetLocale(), Session.LCID and Response.LCID within the same script. This is in fact a technique frequently used to handle numeric data or dates within a page: using an English LCID (1033) to perform calculations, then using a localized LCID in another language/region to return the information to the user.
A common LCID strategy regarding comparisons and displays of character strings is:
Session.LCID at the beginning of a script (or of a session in global.asa)0=vbBinaryCompare)SetLocale() for one-time processingResponse.LCID when displaying a piece of dataWhen coding, you must not rely on any predefined setting: you must set the rules yourself and force the LCID setting from the very beginning of your script. This is the only way to ensure that your code can run on any type of server, regardless of its regional and linguistic configuration (for example, Windows Server in English, French, Spanish, etc.).
Systematically setting the LCID to a constant value before each operation will ensure that your code is reliable and behaves predictably on any Windows server. Handling dates and numeric data on a Classic ASP system requires rigor and consistency. You can call on us if you need to make your code more reliable in these areas:
Dates and times are very heavily impacted by the LCID currently in effect in your Classic ASP script. Some languages use very different date formats, with slashes, hyphens, and spaces to separate days, years, and times. If you historically developed on a Windows system in English, French, or Spanish, then move your code to another server, it will generate a very large number of errors if the default LCID in IIS is not exactly the same.
If your code does not define any LCID, and expects a particular value that you have always known, we offer, free of charge, to define the default LCID in IIS of your choice on your Classic ASP shared hosting. This will allow your source code to run in the same way it always historically has.
The date-related functions impacted by the LCID are the following:
CDate : affects the recognition of date formats (day/month/year order, separators, month names spelled out depending on the language). Example: The date "03/04/2025" will be interpreted as April 3 in fr-FR (LCID 1036), but will mean March 4 with an en-US LCID (1033).IsDate, IsNumeric : affects data validation before conversion. Example: The date "13/04/2025" will be accepted because it is recognized as April 13 in fr-FR (LCID 1036), but will be considered invalid with an en-US LCID (1033), because month #13 does not exist.FormatDateTime : affects date/time formats (day/month order, separators, localized names, etc). WeekdayName : affects the day name and determines the language of the returned text.Explicitly declare the LCID in the same way before each operation:
It is recommended to perform as many date comparison and modification operations as possible using LCID 1033, which is predictable and known by all developers, and available by default on all Windows Server systems.
It is advisable to systematically "parse" the date in order to extract its different components (Day, Month, Year, Hour, Minute, Second), then rebuild it into a variable using the functions DateSerial() or TimeSerial(). You thus obtain a VBScript variable of type date that is perfectly reliable. This is often essential if some dates come from a web form, and more rarely when they are read from your database.
When you compare and modify dates, always use two dates that were defined with the same LCID.
Always perform your calculations, comparisons, and date modifications with the same LCID, then convert them to another time zone only at the time of display. You can use the LJW ServerSuite component to natively convert your dates and times from Classic ASP to other time zones, from and to UTC, as well as in ISO format.
Integer and decimal numbers are very heavily impacted by the LCID currently in effect in your Classic ASP script. Some languages use dots, commas, spaces, etc. to separate thousands and decimals. If you historically developed on a Windows system in English, French, or Spanish, then move your code to another server, it will generate a very large number of errors if the default LCID in IIS is not exactly the same.
If your code does not define any LCID, and expects a particular value that you have always known, we offer, free of charge, to define the default LCID in IIS of your choice on your Classic ASP shared hosting. This will allow your source code to run in the same way it has always historically behaved.
The number-related functions impacted by the LCID are the following:
CLng, CInt, CSng, CDbl, CCur : affects the interpretation of thousands and decimal separators. Example: "1,23" will mean 1.23 in fr-FR (LCID 1036), but may be misinterpreted with an en-US LCID (1033). Note in this regard that CCur() converts to Currency, the only exact decimal type, whereas CDbl() converts to Double, which is a binary floating-point number that may potentially lead to approximations that are unacceptable when dealing with monetary or financial data.FormatNumber, FormatPercent : affects the interpretation of thousands and decimal separators, the groupings, and percentages.FormatCurrency : affects the interpretation of currency symbols, the placement of the symbol, the separators, the number of decimals, and negative numbers.Explicitly declare the LCID in the same way before each operation :
It is recommended to perform as many comparison and modification operations as possible on decimal and monetary numbers using LCID 1033, which is predictable and known by all developers, and available by default on all Windows Server systems.
Do not overlook thousands separators : some languages use the comma or the dot (or even the space) as a thousands separator. You are heading for serious problems if you do not standardize these separators before converting your value into a numeric variable with CLng(), CCur(), etc.
Do not trust any decimal numeric variable. The decimal separator varies depending on the language (comma, dot). VBScript performs all its calculations using variables whose decimal separator is the dot.
Regardless of the origin of your numeric variable, make sure it uses a dot as the decimal separator before converting it with CLng(), CCur(), etc. You might be tempted to replace commas with dots like this :
<%
Dim myDecimalNumber
myDecimalNumber = rs("productPrice") 'Read from database
myDecimalNumber = Replace(myDecimalNumber, ",", ".") 'Replace commas with periods
myDecimalNumber = Trim(Replace(myDecimalNumber, " ", "")) 'Remove spaces
myDecimalNumber = CCur(myDecimalNumber) 'Convert to a decimal variable (currency type)
%>However, in some languages and regions, the comma is not used as a decimal separator, but as a thousands separator. This technique will therefore not work. This is why it is important that you know in advance the origin of the numeric data that your code uses.
Instead, use the following code, which relies on ASP functions responsible for retrieving (in yellow) and using (in blue) the separators actually in effect with the current LCID. This technique works even if you do not know with certainty the original format of the numeric value that you are about to process in your code :
<%
'Function: Returns the separator character used for thousands.
Function GetSystemThousandSep()
GetSystemThousandSep = Mid(FormatNumber(2000), 2, 1)
End Function 'GetSystemThousandSep
'Function: Returns the separator character used for decimals.
Function GetSystemDecimSep()
GetSystemDecimSep = Mid(CStr(1/2), 2, 1)
End Function 'GetSystemDecimSep
'Force the LCID to use English to perform calculations
Response.LCID = 1033
'Retrieve the separators
Dim sepDecimal : sepDecimal = GetSystemDecimSep()
Dim sepThousand : sepThousand = GetSystemThousandSep()
Dim myDecimalNumber
myDecimalNumber = 1234.56
myDecimalNumber = Replace(myDecimalNumber, sepDecimal, ".") 'Force the decimal separator to "period"
myDecimalNumber = Trim(Replace(myDecimalNumber, sepThousand, "")) 'Remove thousands separators
myDecimalNumber = CCur(myDecimalNumber) 'Convert to a decimal variable (Currency type)
Response.LCID = 1033 'Set the display locale ID to English
myDecimalNumber = myDecimalNumber + 0.01 'Add 1 cent (LCID has no impact on this calculation)
Response.Write "EN : " & FormatNumber(myDecimalNumber, 2) & "<hr>" 'Display the variable => Returns 1,234.57
Response.LCID = 1036 'Set the display locale ID to French
myDecimalNumber = myDecimalNumber + 0.01 'Add 1 cent (LCID has no impact on this calculation)
Response.Write "FR : " & FormatNumber(myDecimalNumber, 2) & "<hr>" 'Display the variable => Returns 1 234,58
Response.LCID = 1034 'Set the display locale ID to Spanish
myDecimalNumber = myDecimalNumber + 0.01 'Add 1 cent (LCID has no impact on this calculation)
Response.Write "ES : " & FormatNumber(myDecimalNumber, 2) & "<hr>" 'Display the variable => Returns 1.234,59
%>Your code can trigger an error at any time. Therefore, add safeguards throughout your code. To do this, use the same techniques that we do : program in an ultra-defensive way. For this purpose we use functions that we have specifically developed, but the code below gives you a general idea of the type of checks that must be implemented : (contact us if you need assistance to strengthen your defenses)
<%
'Retrieve the separators (see functions defined elsewhere on this page)
Dim sepDecimal : sepDecimal = GetSystemDecimSep()
Dim sepThousand : sepThousand = GetSystemThousandSep()
Dim myDecimalNumber
myDecimalNumber = rs("productPrice") 'Read from database
if (NOT IsNull(myDecimalNumber)) then
if (myDecimalNumber <> "") then
myDecimalNumber = Replace(myDecimalNumber, sepDecimal, ".") 'Force decimal separator to "period"
myDecimalNumber = Trim(Replace(myDecimalNumber, sepThousand, "")) 'Remove thousands separators
Err.Clear
On Error Resume Next
myDecimalNumber = CCur(myDecimalNumber) 'Convert to decimal variable (Currency type)
if (Err.Number <> 0) then
Response.Write "<br>An error occurred during conversion to type Currency"
Response.Write "<br>" & Err.Number & " - " & Err.Description
end if
On Error Goto 0
Err.Clear
end if
end if
%>The LCID influences the linguistic rules used by Windows and therefore the ASP engine to compare and sort strings (collation and Unicode comparisons). This particularly impacts text comparisons, certain operations related to character casing, and the way accents are handled. This is one of the most frequently overlooked aspects among the many impacts of choosing a LCID.
The LCID affects sorting and text comparisons, but does not affect explicit sorting performed by the database, or raw ASCII comparisons.
The character string functions impacted by the LCID are the following :
= and <> : affects comparisons, which are therefore performed in text mode (1=vbTextCompare), and are therefore sensitive to the LCID. These operators are case-insensitive but remain sensitive to accents in common Latin locales (French, English, etc.). VBScript text comparison is case-insensitive (e = E) and accent-sensitive (e ≠ é), because it relies on the Windows collation associated with the active LCID. VBScript never performs Unicode normalization (NFD / NFC) nor "accent removal": it never transforms é into e. Unlike VBA, Option Compare is not available in VBScript, and this is a major difference that represents a risk. As a result, comparisons performed by these operators are systematically influenced by the LCID and are text comparisons. NEVER use = and <> if an exact comparison is required.StrComp, InStr : affects the comparison of character casing, but does NOT affect accented characters : StrComp is always accent-sensitive and the LCID does not change this. StrComp becomes sensitive to the LCID when the comparison is performed in text mode (1=vbTextCompare) and on strings including accented characters from certain non-Western languages. Note in this regard that this function uses a simplified text comparison, historically limited for languages using special Unicode mappings (examples in Turkish with the characters İ and i, which will always be considered different, even with 1=vbTextCompare). This function also depends on the encoding of your file and the Codepage that you define in your script (highlighted in blue). The following code demonstrates the effects of LCID on string comparisons :<%@codepage=65001%>
<%
'Ensure consistent UTF-8 encoding
'Obviously requires that your ASP file was also saved in UTF-8 format at the source.
Session.CodePage = 65001
Response.CodePage = 65001
Response.CharSet = "utf-8"
Session.LCID = 1036 'Set to French
Dim sourceText : sourceText = "Here is a beautiful written sentence"
Dim searchedText : searchedText = "WRITTEN"
'Technical search (e.g., IDs, paths, emails, tags)
'Use 0=vbBinaryCompare so that the LCID has no influence
'=> searchedText is NOT found
Response.Write "<br>" & (InStr(1, sourceText, searchedText, vbBinaryCompare))
'User search (e.g., displayed text, user input)
'Use an explicit LCID
'=> searchedText is found
Response.Write "<br>" & (InStr(1, sourceText, searchedText, vbTextCompare))
'Implicit binary comparison (independent of the LCID)
'Returns "False" : 0=vbBinaryCompare Case-sensitive
Response.Write "<br>" & ("E" = "e")
'Explicit binary comparison (independent of the LCID)
'Returns "False" : 0=vbBinaryCompare Case-sensitive
Response.Write "<br>" & (StrComp("E", "e", vbBinaryCompare) = 0)
'Explicit textual comparison (depends on the LCID)
'Returns "True" : 1=vbTextCompare InCase-sensitive
Response.Write "<br>" & (StrComp("E", "e", vbTextCompare) = 0)
'Explicit binary comparison (independent of the LCID)
'Returns "False" : 0=vbBinaryCompare Case-sensitive, Accent-sensitive
Response.Write "<br>" & (StrComp("É", "é", vbBinaryCompare) = 0)
'Explicit textual comparison (depends on the LCID)
'Returns "True" : 1=vbTextCompare Case-insensitive, Accent-sensitive.
'"É" and "é" are the same accentuated character.
' => This is the expected behavior.
' Happens if:
' - File saved, for example, in UTF-8 or Windows-1252, and executed as such
' - Consistency between @codepage + Session.CodePage + Response.CodePage + Response.CharSet
Response.Write "<br>" & (StrComp("É", "é", vbTextCompare) = 0)
'Implicit textual comparison (depends on the LCID) (SAME SOURCE CODE AS THE TEST ABOVE => BUT INCORRECT RESULT)
'Returns "False" : 1=vbTextCompare Case-insensitive, Accent-sensitive.
'"É" and "é" are not the same accentuated character : The characters being compared are incorrectly encoded.
' => This is inconsistent and unreliable behavior.
' Happens if:
' - File saved, for example, in UTF-8 but executed in Windows-1252 (or vice versa)
' - Inconsistencies between @codepage + Session.CodePage + Response.CodePage + Response.CharSet
Response.Write "<br>" & (StrComp("É", "é", vbTextCompare) = 0)
'Expected : 201 and 233. Otherwise, the "False" is explained by the aforementioned encoding inconsistencies.
Response.Write "<br>AscW(É)=" & AscW("É") & " / AscW(é)=" & AscW("é")
Response.Write "<hr>"
Session.LCID = 1055 'Turkish
'Implicit binary comparison (independent of the LCID)
'Returns "False" : 0=vbBinaryCompare Case-sensitive
Response.Write "<br>" & ("E" = "e")
'Explicitly binary comparison (independent of the LCID)
'Returns "False" : 0=vbBinaryCompare Case-sensitive
Response.Write "<br>" & (StrComp("E", "e", vbBinaryCompare) = 0)
'Explicit textual comparison (depends on the LCID)
'Returns "True" : 1=vbTextCompare Case-insensitive
Response.Write "<br>" & (StrComp("E", "e", vbTextCompare) = 0)
'Explicitly binary comparison (independent of the LCID)
'Returns "False" : 0=vbBinaryCompare Case-sensitive and Accent-sensitive
Response.Write "<br>" & (StrComp("İ", "i", vbBinaryCompare) = 0)
'Explicit textual comparison (depends on the LCID)
'Should return "True" because of : 1=vbTextCompare Case-insensitive, Accent-sensitive.
'"İ" et "i" are the same accentuated character.
'However, this VBScript function suffers from a historical limitation and performs a simplified textual comparison.
'This function therefore returns "False", which is expected in VBScript.
'Consequently, it is advisable to use a function to replace accented characters
'before any comparison in non-Western languages.
Response.Write "<br>" & (StrComp("İ", "i", vbTextCompare) = 0)
Response.Write "<hr>"
%>
UCase, LCase : affects the conversion performed. The linguistic rules used are delegated/handled by Windows and depend on the LCID. The linguistic rules used correctly handle non-Western languages such as Turkish, unlike StrComp(). Example: UCase("i") will return İ in tr-TR (LCID 1055), but will return I in en-US (LCID 1033).Scripting.Dictionary (with CompareMode: 1=vbTextCompare) : affects the order in which characters are compared. Example:<%
'According to the LCID, the keys "e", "é", "è" will not be considered equivalent, or ordered in the same way.
Set oDict = Server.CreateObject("Scripting.Dictionary")
oDict.CompareMode = 1 'vbTextCompare
%>Explicitly declare the LCID in the same way before each operation:
When you compare or classify character strings, always use a 0=vbBinaryCompare mode to avoid false positives. The risk is even greater with certain types of data (identifiers, codes, emails, passwords): these must NEVER be compared using 1=vbTextCompare, but always using 0=vbBinaryCompare.
There are many sources providing LCID lists. Approach these sources with great caution, because many of them are outdated, incomplete, or even incorrect. We provide an up-to-date list that is fully compatible.
Classic ASP itself does not define any list of available LCIDs: it delegates this task to the Windows NLS (National Language Support) APIs. The Classic ASP platform therefore fully inherits the LCID (Locale ID) list provided by Windows.
Some lists rely on arbitrary or restrictive sources (for example related to Microsoft Office or Exchange), or perform extrapolations from the BCP-47 standard in order to artificially infer imaginary Windows LCIDs. These deductions are incorrect, because each BCP-47 language code does not necessarily have a corresponding entry in the list of valid Windows LCIDs officially supported and implemented by Microsoft: many BCP-47 entries are in fact not supported. Windows strictly distinguishes for each language the pair "script + region", whereas abbreviated BCP-47 notation often indicates only the language code itself (using 2 or 3 characters).
Finally, also pay close attention to the fact that some LCID lists incorrectly include all LCIDs natively supported by Windows. However, although they are defined in Windows, this does not mean that all of them can be used by Classic ASP. An LCID is actually supported by Classic ASP only if it corresponds to a "complete Windows Locale" (language + region) installable via Windows regional settings on the one hand, but also if it is not "script-only", reserved, theoretical, or without a region on the other hand. Make sure you do not specify an LCID that does not exist.
We provide you with the most reliable list of the different LCIDs possible in Classic ASP. This list includes only LCIDs that are actually recognized and still supported by Classic ASP on Windows Server 2025, 2022 and 2019.
Some of these entries are historical and considered "deprecated" in the sense that the "region + language" combination has changed for geopolitical or normative naming reasons; however they remain technically viable and handled by the Classic ASP runtime engine as they were on Windows Server 2016, 2012, 2008, 2003 and 2000. It is recommended to replace the codes indicated in the "Tags Locale - (historical)" column with the current version indicated in the "Tag Locale - IETF BCP 47" column in order to ensure the long-term reliability of your code.
The list provided below has been compiled by us methodically and verified, and proven over time across the many websites, intranets, Classic ASP applications and systems on which we have worked. These LCIDs are all fully functional: use them with confidence with SetLocale() or Session.LCID for example.
| LCID Hexa | LCID Decimal | Tag Locale IETF BCP 47 | Tags Locale (historical) | Language | Region |
|---|---|---|---|---|---|
| 0x0401 | 1025 | ar-SA | Arabic | Saudi Arabia | |
| 0x0402 | 1026 | bg-BG | Bulgarian | Bulgaria | |
| 0x0403 | 1027 | ca-ES | Catalan | Spain | |
| 0x0404 | 1028 | zh-TW | zh-CHT | Chinese (Traditional) | Taiwan |
| 0x0405 | 1029 | cs-CZ | Czech | Czech Republic | |
| 0x0406 | 1030 | da-DK | Danish | Denmark | |
| 0x0407 | 1031 | de-DE | German | Germany | |
| 0x0408 | 1032 | el-GR | Greek | Greece | |
| 0x0409 | 1033 | en-US | English | United States | |
| 0x040A | 1034 | es-ES | Spanish | Spain | |
| 0x040B | 1035 | fi-FI | Finnish | Finland | |
| 0x040C | 1036 | fr-FR | French | France | |
| 0x040D | 1037 | he-IL | iw-IL | Hebrew | Israel |
| 0x040E | 1038 | hu-HU | Hungarian | Hungary | |
| 0x040F | 1039 | is-IS | Icelandic | Iceland | |
| 0x0410 | 1040 | it-IT | Italian | Italy | |
| 0x0411 | 1041 | ja-JP | Japanese | Japan | |
| 0x0412 | 1042 | ko-KR | Korean | Korea | |
| 0x0413 | 1043 | nl-NL | Dutch | Netherlands | |
| 0x0414 | 1044 | nb-NO | no-BOK | Norwegian (Bokmal) | Norway |
| 0x0415 | 1045 | pl-PL | Polish | Poland | |
| 0x0416 | 1046 | pt-BR | Portuguese | Brazil | |
| 0x0417 | 1047 | rm-CH | Romansh | Switzerland | |
| 0x0418 | 1048 | ro-RO | Romanian | Romania | |
| 0x0419 | 1049 | ru-RU | Russian | Russia | |
| 0x041A | 1050 | hr-HR | Croatian | Croatia | |
| 0x041B | 1051 | sk-SK | Slovak | Slovakia | |
| 0x041C | 1052 | sq-AL | Albanian | Albania | |
| 0x041D | 1053 | sv-SE | Swedish | Sweden | |
| 0x041E | 1054 | th-TH | Thai | Thailand | |
| 0x041F | 1055 | tr-TR | Turkish | Turkey | |
| 0x0420 | 1056 | ur-PK | Urdu | Islamic Republic of Pakistan | |
| 0x0421 | 1057 | id-ID | in-ID | Indonesian | Indonesia |
| 0x0422 | 1058 | uk-UA | Ukrainian | Ukraine | |
| 0x0423 | 1059 | be-BY | Belarusian | Belarus | |
| 0x0424 | 1060 | sl-SI | Slovenian | Slovenia | |
| 0x0425 | 1061 | et-EE | Estonian | Estonia | |
| 0x0426 | 1062 | lv-LV | Latvian | Latvia | |
| 0x0427 | 1063 | lt-LT | Lithuanian | Lithuania | |
| 0x0428 | 1064 | tg-Cyrl-TJ | Tajik (Cyrillic) | Tajikistan | |
| 0x0429 | 1065 | fa-IR | Persian | Iran | |
| 0x042A | 1066 | vi-VN | Vietnamese | Vietnam | |
| 0x042B | 1067 | hy-AM | Armenian | Armenia | |
| 0x042C | 1068 | az-Latn-AZ | Azerbaijani (Latin) | Azerbaijan | |
| 0x042D | 1069 | eu-ES | Basque | Spain | |
| 0x042E | 1070 | hsb-DE | wen-DE | Upper Sorbian | Germany |
| 0x042F | 1071 | mk-MK | Macedonian | North Macedonia | |
| 0x0430 | 1072 | st-ZA | Sotho | South Africa | |
| 0x0431 | 1073 | ts-ZA | Tsonga | South Africa | |
| 0x0432 | 1074 | tn-ZA | Setswana | South Africa | |
| 0x0433 | 1075 | ve-ZA | Venda | South Africa | |
| 0x0434 | 1076 | xh-ZA | Xhosa | South Africa | |
| 0x0435 | 1077 | zu-ZA | Zulu | South Africa | |
| 0x0436 | 1078 | af-ZA | Afrikaans | South Africa | |
| 0x0437 | 1079 | ka-GE | Georgian | Georgia | |
| 0x0438 | 1080 | fo-FO | Faroese | Faroe Islands | |
| 0x0439 | 1081 | hi-IN | Hindi | India | |
| 0x043A | 1082 | mt-MT | Maltese | Malta | |
| 0x043B | 1083 | se-NO | Sami (Northern) | Norway | |
| 0x043D | 1085 | yi-001 | ji-001 | Yiddish | World |
| 0x043E | 1086 | ms-MY | Malay | Malaysia | |
| 0x043F | 1087 | kk-KZ | Kazakh | Kazakhstan | |
| 0x0440 | 1088 | ky-KG | Kyrgyz | Kyrgyzstan | |
| 0x0441 | 1089 | sw-KE | Kiswahili | Kenya | |
| 0x0442 | 1090 | tk-TM | Turkmen | Turkmenistan | |
| 0x0443 | 1091 | uz-Latn-UZ | Uzbek (Latin) | Uzbekistan | |
| 0x0444 | 1092 | tt-RU | Tatar | Russia | |
| 0x0445 | 1093 | bn-IN | Bangla | India | |
| 0x0446 | 1094 | pa-IN | Punjabi | India | |
| 0x0447 | 1095 | gu-IN | Gujarati | India | |
| 0x0448 | 1096 | or-IN | Odia | India | |
| 0x0449 | 1097 | ta-IN | Tamil | India | |
| 0x044A | 1098 | te-IN | Telugu | India | |
| 0x044B | 1099 | kn-IN | Kannada | India | |
| 0x044C | 1100 | ml-IN | Malayalam | India | |
| 0x044D | 1101 | as-IN | Assamese | India | |
| 0x044E | 1102 | mr-IN | Marathi | India | |
| 0x044F | 1103 | sa-IN | Sanskrit | India | |
| 0x0450 | 1104 | mn-MN | Mongolian (Cyrillic) | Mongolia | |
| 0x0451 | 1105 | bo-CN | Tibetan | People's Republic of China | |
| 0x0452 | 1106 | cy-GB | Welsh | United Kingdom | |
| 0x0453 | 1107 | km-KH | Khmer | Cambodia | |
| 0x0454 | 1108 | lo-LA | Lao | Lao P.D.R. | |
| 0x0455 | 1109 | my-MM | Burmese | Myanmar | |
| 0x0456 | 1110 | gl-ES | Galician | Spain | |
| 0x0457 | 1111 | kok-IN | Konkani | India | |
| 0x045A | 1114 | syr-SY | Syriac | Syria | |
| 0x045B | 1115 | si-LK | Sinhala | Sri Lanka | |
| 0x045C | 1116 | chr-Cher-US | Cherokee | United States | |
| 0x045d | 1117 | iu-Cans-CA | Inuktitut (Syllabics) | Canada | |
| 0x045E | 1118 | am-ET | Amharic | Ethiopia | |
| 0x045F | 1119 | tzm-Arab-MA | Central Atlas Tamazight (Arabic) | Morocco | |
| 0x0460 | 1120 | ks-Arab | Kashmiri | Perso-Arabic | |
| 0x0461 | 1121 | ne-NP | Nepali | Nepal | |
| 0x0462 | 1122 | fy-NL | Frisian | Netherlands | |
| 0x0463 | 1123 | ps-AF | Pashto | Afghanistan | |
| 0x0464 | 1124 | fil-PH | ti-PH | Filipino | Philippines |
| 0x0465 | 1125 | dv-MV | Divehi | Maldives | |
| 0x0467 | 1127 | ff-NG | Fulah | Nigeria | |
| 0x0467 | 1127 | ff-Latn-NG | Fulah (Latin) | Nigeria | |
| 0x0468 | 1128 | ha-Latn-NG | Hausa (Latin) | Nigeria | |
| 0x046A | 1130 | yo-NG | Yoruba | Nigeria | |
| 0x046B | 1131 | quz-BO | Quechua | Bolivia | |
| 0x046C | 1132 | nso-ZA | Sesotho sa Leboa | South Africa | |
| 0x046D | 1133 | ba-RU | Bashkir | Russia | |
| 0x046E | 1134 | lb-LU | Luxembourgish | Luxembourg | |
| 0x046F | 1135 | kl-GL | Greenlandic | Greenland | |
| 0x0470 | 1136 | ig-NG | Igbo | Nigeria | |
| 0x0471 | 1137 | kr-Latn-NG | Kanuri (Latin) | Nigeria | |
| 0x0472 | 1138 | om-ET | Oromo | Ethiopia | |
| 0x0473 | 1139 | ti-ET | Tigrinya | Ethiopia | |
| 0x0474 | 1140 | gn-PY | Guarani | Paraguay | |
| 0x0475 | 1141 | haw-US | Hawaiian | United States | |
| 0x0476 | 1142 | la-VA | Latin | Vatican City | |
| 0x0477 | 1143 | so-SO | Somali | Somalia | |
| 0x0478 | 1144 | ii-CN | Yi | People's Republic of China | |
| 0x047A | 1146 | arn-CL | Mapudungun | Chile | |
| 0x047C | 1148 | moh-CA | Mohawk | Canada | |
| 0x047E | 1150 | br-FR | Breton | France | |
| 0x0480 | 1152 | ug-CN | Uyghur | People's Republic of China | |
| 0x0481 | 1153 | mi-NZ | Maori | New Zealand | |
| 0x0482 | 1154 | oc-FR | Occitan | France | |
| 0x0483 | 1155 | co-FR | Corsican | France | |
| 0x0484 | 1156 | gsw-FR | Alsatian | France | |
| 0x0485 | 1157 | sah-RU | Sakha | Russia | |
| 0x0486 | 1158 | quc-Latn-GT | K'iche | Guatemala | |
| 0x0487 | 1159 | rw-RW | Kinyarwanda | Rwanda | |
| 0x0488 | 1160 | wo-SN | Wolof | Senegal | |
| 0x048C | 1164 | prs-AF | Dari | Afghanistan | |
| 0x0491 | 1169 | gd-GB | Scottish Gaelic | United Kingdom | |
| 0x0492 | 1170 | ku-Arab-IQ | Central Kurdish | Iraq | |
| 0x0801 | 2049 | ar-IQ | Arabic | Iraq | |
| 0x0803 | 2051 | ca-ES-valencia | Valencian | Spain | |
| 0x0804 | 2052 | zh-CN | zh-CHS | Chinese (Simplified) | People's Republic of China |
| 0x0807 | 2055 | de-CH | German | Switzerland | |
| 0x0809 | 2057 | en-GB | English | United Kingdom | |
| 0x080A | 2058 | es-MX | Spanish | Mexico | |
| 0x080C | 2060 | fr-BE | French | Belgium | |
| 0x0810 | 2064 | it-CH | Italian | Switzerland | |
| 0x0813 | 2067 | nl-BE | Dutch | Belgium | |
| 0x0814 | 2068 | nn-NO | no-NYN | Norwegian (Nynorsk) | Norway |
| 0x0816 | 2070 | pt-PT | Portuguese | Portugal | |
| 0x0818 | 2072 | ro-MD | ro-MO | Romanian | Moldova |
| 0x0819 | 2073 | ru-MD | ru-MO | Russian | Moldova |
| 0x081A | 2074 | sr-Latn-CS | Serbian (Latin) | Serbia and Montenegro (Former) | |
| 0x081D | 2077 | sv-FI | Swedish | Finland | |
| 0x0820 | 2080 | ur-IN | Urdu | India | |
| 0x082C | 2092 | az-Cyrl-AZ | Azerbaijani (Cyrillic) | Azerbaijan | |
| 0x082E | 2094 | dsb-DE | Lower Sorbian | Germany | |
| 0x0832 | 2098 | tn-BW | Setswana | Botswana | |
| 0x083B | 2107 | se-SE | Sami (Northern) | Sweden | |
| 0x083C | 2108 | ga-IE | Irish | Ireland | |
| 0x083E | 2110 | ms-BN | Malay | Brunei Darussalam | |
| 0x0843 | 2115 | uz-Cyrl-UZ | Uzbek (Cyrillic) | Uzbekistan | |
| 0x0845 | 2117 | bn-BD | Bangla | Bangladesh | |
| 0x0846 | 2118 | pa-Arab-PK | Punjabi | Islamic Republic of Pakistan | |
| 0x0849 | 2121 | ta-LK | Tamil | Sri Lanka | |
| 0x0850 | 2128 | mn-Mong-CN | Mongolian (Traditional Mongolian) | People's Republic of China | |
| 0x0859 | 2137 | sd-Arab-PK | Sindhi | Islamic Republic of Pakistan | |
| 0x085D | 2141 | iu-Latn-CA | Inuktitut (Latin) | Canada | |
| 0x085F | 2143 | tzm-Latn-DZ | Tamazight (Latin) | Algeria | |
| 0x0860 | 2144 | ks-Deva-IN | Kashmiri (Devanagari) | India | |
| 0x0861 | 2145 | ne-IN | Nepali | India | |
| 0x0867 | 2151 | ff-Latn-SN | Fulah | Senegal | |
| 0x086B | 2155 | quz-EC | Quechua | Ecuador | |
| 0x0873 | 2163 | ti-ER | Tigrinya | Eritrea | |
| 0x0c01 | 3073 | ar-EG | Arabic | Egypt | |
| 0x0C04 | 3076 | zh-HK | Chinese (Traditional) | Hong Kong S.A.R. | |
| 0x0C07 | 3079 | de-AT | German | Austria | |
| 0x0C09 | 3081 | en-AU | English | Australia | |
| 0x0c0A | 3082 | es-ES | Spanish | Spain | |
| 0x0c0C | 3084 | fr-CA | French | Canada | |
| 0x0C1A | 3098 | sr-Cyrl-CS | Serbian (Cyrillic) | Serbia and Montenegro (Former) | |
| 0x0C3B | 3131 | se-FI | Sami (Northern) | Finland | |
| 0x0C50 | 3152 | mn-Mong-MN | Mongolian (Traditional Mongolian) | Mongolia | |
| 0x0C51 | 3153 | dz-BT | Dzongkha | Bhutan | |
| 0x0C6B | 3179 | quz-PE | Quechua | Peru | |
| 0x1001 | 4097 | ar-LY | Arabic | Libya | |
| 0x1004 | 4100 | zh-SG | Chinese (Simplified) | Singapore | |
| 0x1007 | 4103 | de-LU | German | Luxembourg | |
| 0x1009 | 4105 | en-CA | English | Canada | |
| 0x100A | 4106 | es-GT | Spanish | Guatemala | |
| 0x100C | 4108 | fr-CH | French | Switzerland | |
| 0x101A | 4122 | hr-BA | Croatian (Latin) | Bosnia and Herzegovina | |
| 0x103B | 4155 | smj-NO | Sami (Lule) | Norway | |
| 0x1401 | 5121 | ar-DZ | Arabic | Algeria | |
| 0x1404 | 5124 | zh-MO | Chinese (Traditional) | Macao S.A.R. | |
| 0x1407 | 5127 | de-LI | German | Liechtenstein | |
| 0x1409 | 5129 | en-NZ | English | New Zealand | |
| 0x140A | 5130 | es-CR | Spanish | Costa Rica | |
| 0x140C | 5132 | fr-LU | French | Luxembourg | |
| 0x141A | 5146 | bs-Latn-BA | Bosnian (Latin) | Bosnia and Herzegovina | |
| 0x143B | 5179 | smj-SE | Sami (Lule) | Sweden | |
| 0x1801 | 6145 | ar-MA | Arabic | Morocco | |
| 0x1809 | 6153 | en-IE | English | Ireland | |
| 0x180A | 6154 | es-PA | Spanish | Panama | |
| 0x180C | 6156 | fr-MC | French | Principality of Monaco | |
| 0x181A | 6170 | sr-Latn-BA | Serbian (Latin) | Bosnia and Herzegovina | |
| 0x183B | 6203 | sma-NO | Sami (Southern) | Norway | |
| 0x1C01 | 7169 | ar-TN | Arabic | Tunisia | |
| 0x1C09 | 7177 | en-ZA | English | South Africa | |
| 0x1c0A | 7178 | es-DO | Spanish | Dominican Republic | |
| 0x1C0C | 7180 | fr-029 | French | Caribbean | |
| 0x1C1A | 7194 | sr-Cyrl-BA | Serbian (Cyrillic) | Bosnia and Herzegovina | |
| 0x1C3B | 7227 | sma-SE | Sami (Southern) | Sweden | |
| 0x2001 | 8193 | ar-OM | Arabic | Oman | |
| 0x2009 | 8201 | en-JM | English | Jamaica | |
| 0x200A | 8202 | es-VE | Spanish | Bolivarian Republic of Venezuela | |
| 0x200C | 8204 | fr-RE | French | Reunion | |
| 0x201A | 8218 | bs-Cyrl-BA | Bosnian (Cyrillic) | Bosnia and Herzegovina | |
| 0x203B | 8251 | sms-FI | Sami (Skolt) | Finland | |
| 0x2401 | 9217 | ar-YE | Arabic | Yemen | |
| 0x2409 | 9225 | en-029 | English | Caribbean | |
| 0x240A | 9226 | es-CO | Spanish | Colombia | |
| 0x240C | 9228 | fr-CD | French | Congo DRC | |
| 0x241A | 9242 | sr-Latn-RS | Serbian (Latin) | Serbia | |
| 0x243B | 9275 | smn-FI | Sami (Inari) | Finland | |
| 0x2801 | 10241 | ar-SY | Arabic | Syria | |
| 0x2809 | 10249 | en-BZ | English | Belize | |
| 0x280A | 10250 | es-PE | Spanish | Peru | |
| 0x280C | 10252 | fr-SN | French | Senegal | |
| 0x281A | 10266 | sr-Cyrl-RS | Serbian (Cyrillic) | Serbia | |
| 0x2C01 | 11265 | ar-JO | Arabic | Jordan | |
| 0x2c09 | 11273 | en-TT | English | Trinidad and Tobago | |
| 0x2C0A | 11274 | es-AR | Spanish | Argentina | |
| 0x2c0C | 11276 | fr-CM | French | Cameroon | |
| 0x2c1A | 11290 | sr-Latn-ME | Serbian (Latin) | Montenegro | |
| 0x3001 | 12289 | ar-LB | Arabic | Lebanon | |
| 0x3009 | 12297 | en-ZW | English | Zimbabwe | |
| 0x300A | 12298 | es-EC | Spanish | Ecuador | |
| 0x300C | 12300 | fr-CI | French | Côte d'Ivoire | |
| 0x301A | 12314 | sr-Cyrl-ME | Serbian (Cyrillic) | Montenegro | |
| 0x3401 | 13313 | ar-KW | Arabic | Kuwait | |
| 0x3409 | 13321 | en-PH | English | Republic of the Philippines | |
| 0x340A | 13322 | es-CL | Spanish | Chile | |
| 0x340C | 13324 | fr-ML | French | Mali | |
| 0x3801 | 14337 | ar-AE | Arabic | U.A.E. | |
| 0x380A | 14346 | es-UY | Spanish | Uruguay | |
| 0x380C | 14348 | fr-MA | French | Morocco | |
| 0x3C01 | 15361 | ar-BH | Arabic | Bahrain | |
| 0x3C09 | 15369 | en-HK | English | Hong Kong S.A.R. | |
| 0x3C0A | 15370 | es-PY | Spanish | Paraguay | |
| 0x3c0C | 15372 | fr-HT | French | Haiti | |
| 0x4001 | 16385 | ar-QA | Arabic | Qatar | |
| 0x4009 | 16393 | en-IN | English | India | |
| 0x400A | 16394 | es-BO | Spanish | Bolivia | |
| 0x4409 | 17417 | en-MY | English | Malaysia | |
| 0x440A | 17418 | es-SV | Spanish | El Salvador | |
| 0x4809 | 18441 | en-SG | English | Singapore | |
| 0x480A | 18442 | es-HN | Spanish | Honduras | |
| 0x4C09 | 19465 | en-AE | English | United Arab Emirates | |
| 0x4C0A | 19466 | es-NI | Spanish | Nicaragua | |
| 0x500A | 20490 | es-PR | Spanish | Puerto Rico | |
| 0x540A | 21514 | es-US | Spanish | United States | |
| 0x580A | 22538 | es-419 | Spanish | Latin America | |
| 0x5c0A | 23562 | es-CU | Spanish | Cuba |
We help you efficiently with IIS and your Classic ASP code.
Just get in touch with our team
NOTE: Your changes will be applied from the next page you will visit/load.
By using this website, you consent that we use technologies such as anonymous statistics and cookies to improve your browsing experience on our site, customise content, and analyse our traffic. This anonymous information may be shared with our trusted social media and analytics partners.