Корректная перекодировка KOI в WIN
|
Страница 1 из 2
Для корректной перекодировки необходимо пользоваться установленными в системе кодовыми таблицами и функциями MultiByteToWideChar() или WideCharToMultiByte(). Так как перекодировка идет через Юникод, предположительно будет максимальное соответствие (а не так, как, например, в Far Manager, когда все перекодировки ведутся через 866 таблицу - откуда потери несуществующих в ней символов, даже если они есть в исходной и конечной таблицах).
Методом научного тыка (EnumSystemCodePages), первоначально под Windows 2000, обнаружены следующие (интересующие русскоговорящего человека) таблицы (цитирую заголовок):
#define CP_KOI8R 20866 #define CP_KOI8U 21866 #define CP_ISO_8859_5 28595
Несмотря на то, что при использовании EnumSystemCodePages() под Windows 98/95они не включаются в перечисление , тем не менее, при установленном IE4.0 и выше MultiByteToWideChar()/WideCharToMultiByte() с успехом работает с этими константами.
В принципе, можно сделать универсальную табличную перекодировку, если сохранить перекодировочные таблицы Юникод -> [интересующие таблицы], и затем, без вызова MultiByteToWideChar/WideCharToMultiByte "на месте" посимвольно преобразовавать строки. |