1
+ // Event-Handler für die Dateiauswahl
1
2
function handleFileSelect ( event ) {
2
3
const file = event . target . files [ 0 ] ;
3
4
const reader = new FileReader ( ) ;
5
+
6
+ // Wenn die Datei geladen wurde
4
7
reader . onload = function ( ) {
5
8
const arrayBuffer = reader . result ;
6
9
const uint8Array = new Uint8Array ( arrayBuffer ) ;
7
10
const binaryString = arrayBufferToBinaryString ( uint8Array ) ;
8
- const asciiString = convertBinaryToAscii ( binaryString ) ;
9
- const unicodeString = convertBinaryToUnicode ( binaryString , 'UTF-8' ) ; // Umwandlung in UTF-8
10
- const isoString = convertBinaryToUnicode ( binaryString , 'ISO-8859-1' ) ; // Umwandlung in ISO-8859-1
11
+ const unicodeString = convertBinaryToUnicode ( binaryString , 'UTF-8' ) ; // Konvertierung in UTF-8
11
12
12
- // Gib die Ergebnisse aus oder tue etwas anderes damit
13
- console . log ( 'ASCII: ' + asciiString ) ;
13
+ // Ergebnis ausgeben oder anderweitig verwenden
14
14
console . log ( 'Unicode: ' + unicodeString ) ;
15
- console . log ( 'ISO-8859-1: ' + isoString ) ;
16
15
17
16
const output = document . getElementById ( 'output' ) ;
18
- output . innerHTML = `ASCII: ${ htmlEncode ( asciiString ) } <br> Unicode: ${ htmlEncode ( unicodeString ) } <br>ISO-8859-1: ${ htmlEncode ( isoString ) } ` ;
17
+ output . innerHTML = `Unicode: ${ htmlEncode ( unicodeString ) } ` ;
19
18
} ;
20
19
21
20
reader . readAsArrayBuffer ( file ) ;
22
21
}
23
22
23
+ // Dateieingabe überwachen
24
24
document . getElementById ( 'fileInput' ) . addEventListener ( 'change' , handleFileSelect ) ;
25
25
26
26
// Funktion zur HTML-Kodierung von Zeichen
@@ -30,86 +30,30 @@ function htmlEncode(str) {
30
30
} ) ;
31
31
}
32
32
33
+ // Konvertiert eine binäre Zeichenkette in einen Unicode-String basierend auf dem Zeichensatz
33
34
function convertBinaryToUnicode ( binaryString , charset ) {
34
35
let unicodeString = '' ;
35
- let byte1 , byte2 , byte3 , byte4 , charCode ;
36
36
37
37
// Schleife durch die Binärzeichenkette
38
38
for ( let i = 0 ; i < binaryString . length ; i += 8 ) {
39
-
40
- // Wenn das nächste Zeichen ein 16-Bit-Zeichen ist, verarbeite es als solches
41
- if ( binaryString . charAt ( i ) === '1' && binaryString . charAt ( i + 1 ) === '0' ) {
42
- const chunk = binaryString . substr ( i , 16 ) ;
43
- charCode = parseInt ( chunk , 2 ) ;
44
- i += 8 ; // überspringe das zweite Byte des 16-Bit-Zeichens
45
- } else {
46
- // sonst verarbeite das Zeichen als 8-Bit-Zeichen
47
- const chunk = binaryString . substr ( i , 8 ) ;
48
- charCode = parseInt ( chunk , 2 ) ;
49
- }
39
+ const chunk = binaryString . substr ( i , 8 ) ;
40
+ const charCode = parseInt ( chunk , 2 ) ;
50
41
51
42
// Konvertiere den CharCode in den Unicode-String, abhängig vom Zeichensatz
52
43
if ( charset === 'UTF-8' ) {
53
- if ( charCode < 128 ) {
54
- // 1 Byte
55
- unicodeString += String . fromCharCode ( charCode ) ;
56
- } else if ( charCode < 2048 ) {
57
- // 2 Bytes
58
- byte1 = 192 + ( charCode >> 6 ) ;
59
- byte2 = 128 + ( charCode & 63 ) ;
60
- unicodeString += String . fromCharCode ( byte1 , byte2 ) ;
61
- } else if ( charCode < 65536 ) {
62
- // 3 Bytes
63
- byte1 = 224 + ( charCode >> 12 ) ;
64
- byte2 = 128 + ( ( charCode >> 6 ) & 63 ) ;
65
- byte3 = 128 + ( charCode & 63 ) ;
66
- unicodeString += String . fromCharCode ( byte1 , byte2 , byte3 ) ;
67
- } else {
68
- // 4 Bytes
69
- byte1 = 240 + ( charCode >> 18 ) ;
70
- byte2 = 128 + ( ( charCode >> 12 ) & 63 ) ;
71
- byte3 = 128 + ( ( charCode >> 6 ) & 63 ) ;
72
- byte4 = 128 + ( charCode & 63 ) ;
73
- unicodeString += String . fromCharCode ( byte1 , byte2 , byte3 , byte4 ) ;
74
- }
75
- } else if ( charset === 'ISO-8859-1' ) {
76
- unicodeString += String . fromCharCode ( charCode ) ;
77
- } else {
78
- // Standardmäßig wird UTF-8 verwendet
79
44
unicodeString += String . fromCharCode ( charCode ) ;
80
45
}
81
46
}
82
- return unicodeString ;
83
- }
84
-
85
- function convertBinaryToAscii ( binaryString ) {
86
- let asciiString = '' ;
87
-
88
- // Loop through the binary string in chunks of 8
89
- for ( let i = 0 ; i < binaryString . length ; i += 8 ) {
90
- const chunk = binaryString . substr ( i , 8 ) ;
91
- const charCode = parseInt ( chunk , 2 ) ; // Convert the binary chunk to decimal
92
-
93
- // Convert the decimal charCode to ASCII character
94
- asciiString += String . fromCharCode ( charCode ) ;
95
- }
96
47
97
- return asciiString ;
48
+ return unicodeString ;
98
49
}
99
50
51
+ // Konvertiert ein Array-Puffer-Objekt in eine binäre Zeichenkette
100
52
function arrayBufferToBinaryString ( arrayBuffer ) {
101
53
const byteArray = new Uint8Array ( arrayBuffer ) ;
102
54
let binaryString = '' ;
103
55
for ( let i = 0 ; i < byteArray . byteLength ; i ++ ) {
104
56
binaryString += String . fromCharCode ( byteArray [ i ] ) ;
105
57
}
106
58
return binaryString ;
107
- }
108
-
109
- function convertUint8ArrayToBinaryString ( uint8Array ) {
110
- let binaryString = '' ;
111
- for ( let i = 0 ; i < uint8Array . length ; i ++ ) {
112
- binaryString += String . fromCharCode ( uint8Array [ i ] ) ;
113
- }
114
- return decodeURIComponent ( escape ( binaryString ) ) ;
115
59
}
0 commit comments