Skip to content

Commit c182536

Browse files
committed
Simplify main.js to UTF-8 only
1 parent d4b7d8e commit c182536

File tree

3 files changed

+137
-71
lines changed

3 files changed

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

Coding Puzzle/main.js

Lines changed: 12 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
1+
// Event-Handler für die Dateiauswahl
12
function handleFileSelect(event) {
23
const file = event.target.files[0];
34
const reader = new FileReader();
5+
6+
// Wenn die Datei geladen wurde
47
reader.onload = function() {
58
const arrayBuffer = reader.result;
69
const uint8Array = new Uint8Array(arrayBuffer);
710
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
1112

12-
// Gib die Ergebnisse aus oder tue etwas anderes damit
13-
console.log('ASCII: ' + asciiString);
13+
// Ergebnis ausgeben oder anderweitig verwenden
1414
console.log('Unicode: ' + unicodeString);
15-
console.log('ISO-8859-1: ' + isoString);
1615

1716
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)}`;
1918
};
2019

2120
reader.readAsArrayBuffer(file);
2221
}
2322

23+
// Dateieingabe überwachen
2424
document.getElementById('fileInput').addEventListener('change', handleFileSelect);
2525

2626
// Funktion zur HTML-Kodierung von Zeichen
@@ -30,86 +30,30 @@ function htmlEncode(str) {
3030
});
3131
}
3232

33+
// Konvertiert eine binäre Zeichenkette in einen Unicode-String basierend auf dem Zeichensatz
3334
function convertBinaryToUnicode(binaryString, charset) {
3435
let unicodeString = '';
35-
let byte1, byte2, byte3, byte4, charCode;
3636

3737
// Schleife durch die Binärzeichenkette
3838
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);
5041

5142
// Konvertiere den CharCode in den Unicode-String, abhängig vom Zeichensatz
5243
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
7944
unicodeString += String.fromCharCode(charCode);
8045
}
8146
}
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-
}
9647

97-
return asciiString;
48+
return unicodeString;
9849
}
9950

51+
// Konvertiert ein Array-Puffer-Objekt in eine binäre Zeichenkette
10052
function arrayBufferToBinaryString(arrayBuffer) {
10153
const byteArray = new Uint8Array(arrayBuffer);
10254
let binaryString = '';
10355
for (let i = 0; i < byteArray.byteLength; i++) {
10456
binaryString += String.fromCharCode(byteArray[i]);
10557
}
10658
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));
11559
}

Coding Puzzle/upload.html

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
<!DOCTYPE html>
22
<html lang="en">
33
<head>
4-
<meta charset="ISO-8859-1">
4+
<meta charset="UTF-8">
55
<title>File Converter</title>
6-
<script src="https://cdn.jsdelivr.net/npm/iconv-lite@0.6.4/dist/iconv-lite.min.js"></script>
76
</head>
87
<body>
98
<form id="fileForm">
109
<input type="file" id="fileInput">
1110
<button type="submit" id="uploadButton">Upload</button>
1211
</form>
13-
<div>1) Wähle eine zu decodierende Datei aus.</div>
12+
<div>1) Wähle eine zu decodierende Datei aus.</div>
1413
<div>2) Nach "Upload" erscheint hier die codierte Ausgabe:</div>
1514
<div id="output"></div>
1615
<script src="main.js"></script>

0 commit comments

Comments
 (0)