Предоставление команды Linux timeout
не является плохим обходным решением, и это сработало для меня.
cmd = "timeout 20 "+ cmd
subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(output, err) = p.communicate()
Байт 189 представляет "ВЅ" в iso-8859-1 (иначе "латинский 1"), таким образом, следующее, возможно, что Вы хотите:
var e = Encoding.GetEncoding("iso-8859-1");
var s = e.GetString(new byte[] { 189 });
Все строки и символы в.NET являются закодированным UTF-16, таким образом, необходимо использовать кодер/декодер для преобразования чего-либо еще, иногда это принято значение по умолчанию (например, UTF-8 для экземпляров FileStream), но хорошая практика должна всегда определять.
Вам будет нужна некоторая форма неявных или (лучших) явных метаданных для предоставления Вас информацию о который кодирование.
Это зависит от точно, каково кодирование.
нет такой вещи как "ASCII 189" - ASCII только подходит 127. Существует много кодировок который 8-разрядная кодировка с помощью ASCII для первых 128 значений.
Вы можете хотеть Encoding.Default
(который является кодировкой по умолчанию для Вашей конкретной системы), но трудно знать наверняка. Куда Ваши данные прибывали из?