Question: So what is the difference between Unicode (i386ur) and ANSI (i386r)?
Answer: Put simply, a Unicode program is a special version that runs slightly faster than an ANSI one, but only runs on Windows NT. If you're in doubt as to which one to download, download the ANSI version. For more information on the differences between Unicode and ANSI, please read below.
ANSI came first. ANSI is an organization that standardizes various areas, both public and private. It is an acronym for American National Standards Institute. ANSI has standardized many areas of computing. One of the standards in computers was the character set (letters, numbers, and symbols) that a computer uses. This standard was called ASCII (American Standard Code for Information Interchange). This standard provided 256 different symbols that a computer can use. It was quick, efficient, and easy to implement. All modern operating systems fully understand ASCII.Unicode
One major draw back to ASCII was you could only have 256 different characters. However, languages such as Japanese and Arabic have thousands of characters. Thus ASCII would not work in these situations. The result was Unicode which allowed for up to 65,536 different characters. Since Unicode is more complex it is not implemented on many operating systems. In terms of Microsoft; Windows NT, Windows 2000, Windows XP, and Windows 2003 support Unicode as will all future releases of Windows.
So the question now becomes, if Windows NT supports both ASCII and Unicode, why do Unicode programs run faster. To answer this you have to understand Windows NT itself. All operating systems have what is called a "kernel." The kernel is the heart of the OS; it is the lowest level, the innards or guts of the OS. In Windows NT the kernel is written in Unicode, and therefore only understands Unicode. When an ANSI program runs on Windows NT, the OS must convert the strings from ASCII to Unicode. This takes both time to convert everything, and memory to store both copies (ASCII and Unicode). Whereas a Unicode program has straight access to the kernel and is faster. Now on modern computers running at gigahertz speeds and having hundreds of megs of RAM this speed difference is minimal, but it does exist. The simple fact remains, the same program running as either ANSI or Unicode, the Unicode version will always run faster.
The final area to address is why do Unicode programs only run on Windows NT and not other operating systems such as Windows 95/98/ME. The answer goes back to the "kernel." Because Windows 95/98/ME are designed to be a "light-weight" and simple OS for the general user, the kernel is written in ASCII. Microsoft could have implemented a conversion scheme similar to that of Windows NT, but this would take a lot of resources like memory and hard disk. Windows 95/98/ME can run on a low-end system with as little as 4 megs of RAM, whereas Windows NT requires a minimum of 16 megs of RAM. But with most computers now having 64 megs of RAM or more, this is not as important. This is one of the main reasons the Windows 95/98/ME code base is dead.