В соответствии со списком кодировок нет 1001.
Вам нужно не только знать язык, но и использовать фактическую кодировку текста.Для арабского языка их больше одного.
Используете ли вы 1001, потому что это Win32 LCID для других локалей?Это неправильно: 1. идентификаторы кодирования не имеют ничего общего с идентификаторами локали (оба не рекомендуются в пользу имен, потому что существует слишком много вариантов обоих, чтобы быть полезными мнемоническими);и 2. в действительности это не 1001, это 0x0101, что составляет 256.)
PS.Encoding.RegisterProvider
определенно задокументировано (и существует с .NET 4.6 - помните, что CLR-версия времени выполнения не является фреймворковой версией.)