Norske tegn i Windows Batch Skripting
Relevante code pages for norsk språk i batch skripter.
Codepage som støtter ÆØÅ.
1252 West European Latin
65001 UTF-8
Fil lagret i ANSI:
@echo off
chcp 1252
echo æøå ÆØÅ
pause
Resultat:
Active code page: 1252
æøå ÆØÅ
Press any key to continue . . .
Samme skript med 65001:
Active code page: 65001
��� ���
Press any key to continue . . .
Hvis jeg derimot lagrer filen i UTF-8 format (uten BOM):
Active code page: 65001
æøå ÆØÅ
Press any key to continue . . .
Hvis jeg prøver å bytte til 1252 med UTF-8 lagret skript:
Active code page: 1252
æøå ÆØÅ
Press any key to continue . . .
Så, 1252 for ANSI og 65001 for konsekvent UTF-8.
TIPS: Bruk chcp 65001 >nul 2>&1 for å skjule "Active code page:" meldingen.
Hvorfor er norske tegn en utfordring?
Byte-visning av 'ABC ÆØÅ' lagret som UTF-8:
0x41 0x42 0x43 0x20 0xC3 0x86 0xC3 0x98 0xC3 0x85
Lagret som ANSI:
0x41 0x42 0x43 0x20 0xC6 0xD8 0xC5
A,B,C tar alltid 1 byte hver og vil være likt i begge lagrede tilfeller siden A-Z er en del av ASCII/ANSI or har samme 1- byte verdier
også i UTF-8. ÆØÅ derimot vil lagres med 2 bytes i UTF-8. UTF-8 kan lagre tegn i opptil 4 bytes og har derfor plass til veldig mange
tegn og er foretrukket i dag hvor man f.eks. må ha støtte for flere språk.
Hvis du ser i ANSI lagringen, så er f.eks. Æ = C6 = 198. I
UTF-8 lagringen er Æ = C3 (code point / internt tegnsett) og nummer 86 i det tegnsettet. Når det blir tolket av en UTF-8 code page
så leses de 2 bytene som 1 tegn basert på den kartleggingen. De 2 bytene kan også representeres som U+00C6, via en intern
kartlegging i UTF-8 standarden. Det viktigste er å være konsekvent.
Man kan iblant se eksempler på Internett hvor enkelte tegn
utenfor ASCII/ANSI rekkevidden vises i form av �. Dette skjer når webutviklere forteller skriptet sitt hvordan ting skal vises på 1
måte, lagrer filer på en annen måte, og kanskje heller ikke tenker over hvilket tegnsett og format som benyttes i en potensiell
database. Det er lov å gjøre feil, men er også dumt når det ikke blir fikset fordi det har vært brukt ørten rammeverk i høyden for å
spare tid uten full forståelse, hvor man kanskje ikke tør å rote for mye i ting etter en stund for at det ikke skal rakne i sømmene...
Planlegg på forhånd, tenk over hva som gir mening, og forsøksvis vær så konsekvent som mulig.
Forøvrig, en fin referanse til Batch skripting:
https://ss64.com/nt/