How to do it properly for WinNT

ATTENTION: A perfect solution for WinNT would be using KOI8-R<->CP1251 translation tables at the system level or inside each Internet or HTML related program (even this solution have some disadvantages, but nothing more fancy can be done in WinNT at this moment). Until this is implemented (I guess, after some critical mass of decoding programs is reached), a temporary solution is available here.

It is commendable that some programs support KOI8-R<->CP1251 translation automatically, but:

  1. Such programs are relatively rare (for example, Mozilla , Opera 12 , MS Internet Explorer and MS Outlook Express Mail/News do it), a lot of interesting Internet software is unaware about the necessary decoding.
  2. Emulating KOI8-R via CP1251 can't be complete because character repertoires are different. Properly done, this would require UNICODE intermediation.
In this situation, it would be useful to have KOI8-R as the separate Code Page 878 (officially registered by IBM) for WinNT, but this is beyond hacks and can be properly done only by Microsoft itself. At the moment of adding KOI8-R support Microsoft was unaware about CP878 registration by IBM and uses its own code page number 20866 to represent KOI8-R encoding. My solution amounts to just replacing the existing Central European decoding table (script number 238) with a KOI8-R table.

As a matter of fact, we don't need KOI8-R fonts at all, as .TTF fonts from Microsoft are always in UNICODE , and we only need to make use of them. The only thing to do is to add KOI8-R -> UNICODE translation table.

An easy way to install KOI8-R script inplace Central European one is copying c_20866.nls resource file to c_1250.nls file, so KOI8-R text will be available as CE text (or font with CE suffix) at the system level. In case you not have c_20866.nls, you can download it's ZIP .

See also the same issue for Win3.11, the same issue for Win95, Notes on the Win95 Cp_20866.nls resource (for programmers).