2017-01-26 16 views
0

Я искал файл asn.tcl, который загрузил и использовал кодировку convertfrom ascii. Когда я запускаю эту команду, она не работает при кодировании ascii (она работает с utf-8). Кто-нибудь знает, как использовать его с ascii?Tcl - encoding convertfrom ascii

Спасибо.

+0

ASCII - это подмножество UTF-8. Существует буквально нулевая разница, когда вы сравниваете ВСЕ символы в ASCII с одинаковыми символами в UTF-8. Разница заключается в расширенном ASCII, но расширенный ASCII не называется ASCII, потому что существует много вариантов. Там Windows-1252, есть латинский-1 и т. Д. Все они, как UTF-8, надмножество ASCII – slebetman

ответ

2

ASN.1 обычно лучше всего обрабатывать как двоичные данные из get go, а кодирование строк, содержащихся в нем, было бы тем, что ключи для этих строк должны определяться. В резервном случае, когда вы не знаете, какую кодировку использовать, кодировка iso8859-1 является первым выбором, так как это специальный, который не делает ужасного искажения двоичных данных. (Это связано с тем, что он точно отображает байты в диапазоне 0-255 для символов в диапазоне U + 000000-U + 0000FF, который является как тривиальным, так и не убывающим.) Угадание кодирование в противном случае является трудным, иногда невозможным.

Я бы не хотел разбирать ASN.1 вручную. Используйте tcllib package for it. С обычными тегами, он может сделать большую часть работы за вас:

package require asn 

set f [open "mydata.ber" "rb"] 
set myData [read $f] 
close $f 
# ... 
# Data being parsed is now in $myData variable 
# I assume that we've reached a string in the parsing of it 
# ... 
asn::asnGetString myData myString 
puts "String parsed was '$myString'" 

Однако, я думаю, что любой человек, использующий его еще нужно понимать ASN.1 на логическом уровне.

+0

спасибо, я использовал iso8859-1, и он сделал работу – itayb