2017-01-26 4 views
0

Ich suchte auf asn.tcl Datei, die ich heruntergeladen habe und es verwendete Kodierung convertfrom ascii. Wenn ich diesen Befehl ausführen, scheitert es an Ascii-Codierung (es funktioniert mit UTF-8). Kann jemand mit ascii verwenden?Tcl - encoding convertfrom ascii

Danke.

+0

ASCII ist eine Teilmenge von UTF-8. Es gibt buchstäblich keine Unterschiede, wenn Sie ALLE Zeichen in ASCII mit denselben Zeichen in UTF-8 vergleichen. Der Unterschied kommt von erweitertem ASCII, aber erweitertes ASCII wird nicht ASCII genannt, weil es viele Varianten gibt. Es gibt Windows-1252, es gibt Latin-1 etc. Sie sind alle, wie UTF-8, Superset von ASCII – slebetman

Antwort

2

ASN.1 würde in der Regel am besten als Binärdaten aus dem Get-Go behandelt werden, und die Codierung der darin enthaltenen Strings wäre etwas, was die Schlüssel für diese Strings definieren müssten. In dem Fallback-Fall, in dem Sie nicht wissen, welche Kodierung zu verwenden ist, ist die Kodierung iso8859-1 die erste Wahl, da dies die spezielle Option ist, die keine schrecklichen Fehler an Binärdaten verursacht. (Das liegt daran, dass es Bytes im Bereich 0-255 genau auf Zeichen im Bereich U + 000000-U + 0000FF abbildet, was sowohl trivial als auch nicht verlustbehaftet ist.) Vermutlich ist die Codierung ansonsten schwierig, manchmal unmöglich.

Ich würde nicht wollen, ASN.1 von Hand zu analysieren. Verwenden Sie die tcllib package for it. Mit normalen Tags, kann er den Großteil der Arbeit für Sie tun:

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'" 

Aber ich denke, dass jeder es noch muss verstehen, ASN.1 auf der logischen Ebene verwendet wird.

+0

Danke, ich habe das iso8859-1 verwendet und es hat den Job gemacht – itayb