Как я могу преобразовать расширенный ASCII в Систему. Строка?

Предоставление команды Linux timeout не является плохим обходным решением, и это сработало для меня.

cmd = "timeout 20 "+ cmd
subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(output, err) = p.communicate()
20
задан rtremaine 20 March 2009 в 14:28
поделиться

2 ответа

Байт 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), но хорошая практика должна всегда определять.

Вам будет нужна некоторая форма неявных или (лучших) явных метаданных для предоставления Вас информацию о который кодирование.

26
ответ дан 29 November 2019 в 06:54
поделиться

Это зависит от точно, каково кодирование.

нет такой вещи как "ASCII 189" - ASCII только подходит 127. Существует много кодировок который 8-разрядная кодировка с помощью ASCII для первых 128 значений.

Вы можете хотеть Encoding.Default (который является кодировкой по умолчанию для Вашей конкретной системы), но трудно знать наверняка. Куда Ваши данные прибывали из?

12
ответ дан 29 November 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: