Ce face latin1
latin1 codifică fiecare caracter într-un singur octet, pentru caracterele cu codul 0–255 (literele vest-europene, ca é, ü, â, î). ascii acceptă doar caracterele 0–127: litere englezești, cifre, semne de punctuație.
Ambele au encode și decode, ca utf8. Literele ă, ș, ț nu există nici în Latin-1, nici în ASCII: encode aruncă ArgumentError. Le folosești doar pentru fișiere sau protocoale vechi care cer explicit aceste codificări; în rest, alege UTF-8.
La decode, allowInvalid: true înlocuiește octeții din afara intervalului cu � în loc să arunce eroare.
Ce returnează
encode: octeții; decode: textul.
Exemple
Exemplul 1: Ce caractere acceptă fiecare
import 'dart:convert';
void main() {
print(latin1.encode('café'));
print(utf8.encode('café'));
print(ascii.encode('Ana 10'));
for (final cuvant in ['café', 'Iași']) {
try {
ascii.encode(cuvant);
print('$cuvant: ASCII ok');
} on ArgumentError {
print('$cuvant: nu se poate scrie în ASCII');
}
}
}
Rezultat
[99, 97, 102, 233]
[99, 97, 102, 195, 169]
[65, 110, 97, 32, 49, 48]
café: nu se poate scrie în ASCII
Iași: nu se poate scrie în ASCII
Exemplul 2: Fișier UTF-8 citit greșit ca Latin-1
Fiecare octet devine un caracter separat: așa apar textele stricate de tipul î.
import 'dart:convert';
void main() {
final octeti = utf8.encode('Pâine și înghețată');
print(latin1.decode(octeti));
print(utf8.decode(octeti));
print(ascii.decode([65, 200, 66], allowInvalid: true));
}
Rezultat
Pâine Èi îngheÈatÄ
Pâine și înghețată
A�B
Greșeli frecvente
- Codifici text românesc cu
latin1:șșițnu există acolo și primeștiArgumentError. - Citești un fișier UTF-8 ca Latin-1 (sau invers): diacriticele apar stricate. Codificarea la citire trebuie să fie aceeași cu cea de la scriere.
Comenzi înrudite
utf8: Codec-ul UTF-8: encode transformă textul în octeți, decode transformă octeții înapoi în text.base64Encode: base64Encode transformă octeți în text Base64; base64Decode face invers, din text Base64 în octeți.