Декодер 2cp866

Больше года назад я написал функцию для перекодировки текста из одной кодировки в другую, с помощью функций .Net, однако недавно выяснилось (спасибо Евгению) что у .Net есть проблемы при конвертации в cp866. Так что я написал заглушку которая перекодирует текст в cp866, без использования .Net

ConvertTo-cp866.ps1
Begin { $ll = @'  ЎўЈ¤Ґ¦§Ё©Є«¬­®Їабвгдежзийклмноп '@ $ul = @' ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ '@ } Process{ [string]::Join("", $( [int[]][char[]]$_ | foreach { if ($_ -ge 1072 -and $_ -le 1103) { $_ = [int]$ll[$_ - 1072] } elseif ($_ -ge 1040 -and $_ -le 1071) { $_ = [int]$ul[$_ - 1040] } [char]$_ } ) ) }

Чутье подсказывает что можно написать сильно проще, но сейчас в голову ничего не лезет🙂

Использовать так:

[PS C:\Root] "abcdefABCDEFабвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" | >> ConvertTo-cp866.ps1 abcdefABCDEF ЎўЈ¤Ґ¦§Ё©Є«¬­®ЇабвгдежзийклмнопЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ [PS C:\Root] "abcdefABCDEFабвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" | >> ConvertTo-cp866.ps1 | ConvertTo-Encoding cp866 windows-1251 abcdefABCDEFабвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

На всякий случай выкладываю в виде файла (а то вордпресс опять какие-нибудь символы переврет).

Опубликовано в PowerShell, Practice, Scripting. Комментарии к записи Декодер 2cp866 отключены
%d такие блоггеры, как: