HTML-logo   Tegnsæt




UTF-8


Efter adskillige års turbulens omkring tegnsæt (først et fælles, så mange sideordnede og nu igen et) er UTF-8 det første egentlige verdensomspændende tegnsæt. Derved lettes / muliggøres global kommunikation uden sorte firkanter i teksten.


UTF-8 har været til rådighed og i stigende grad anvendt siden medio 199x. Omkring årsskiftet 2012 - 2013 begyndte W3 ved HTML-validering at validere mod UTF-8. Det vil herefter være svært at argumentere for at anvende iso-8859-1 eller iso-8859-15 i nye dansksprogede hjemmesider.


UTF-8 er delt op i ca. 220 blokke (Unicode Blocks) hver med fra ca. 20 til 256 tegn. De fleste blokke indeholder tegn til et specifikt sprog eller gruppe af sprog med ligheder i tegnsæt. Dansk er indeholdt i den første blok - Basic Latin.


En halv snes blokke indeholder "ikoner" såsom valuta symboler, pile og andet.


UTF-8Omfattende oversigt over blokke og de enkelte tegn deri med krydsreference til fonte og hvilke fonte det enkelte tegn indgår i, samt visning af hvordan det skrives som enkelttegn i 11 programmeringssprog etc..
UTF-8Forholdsvis enkel (blokvis) oversigt over UTF-8 tegn.
UTF-8W3 "encoding" arb.gruppe
Navngivne tegnOversigt over tegn, der kan angives i HTML ved deres navn. Kræver skærm med meget stor opløsning eller skift til JSON fil.



For at kunne anvende UTF-tegnsættet skal både HTML-sider og CSS-filer helst fortælle det til browseren. Det gøres således:


         I                           indsættes            Bemærkninger
HTML-sider <head>
<meta charset="UTF-8" />
Bør indsættes umiddelbart efter <HTML>-taggen. Browserne leder dog vistnok i de første 1024 kar. før de begynder egentlig indlæsning af siden.
CSS-filer@charset "UTF-8";Det er vigtigt at mellemrummet mellem charset og " er på 1 kar.



ASCII

ASCII er det oprindelige (amerikanske) tegnsæt til computere. Det indgår i mange andre tegnsæt med de samme / oprindelige værdier. Det består af tre hoveddele:


0 - 31Styrekarakterer
32 - 127Printbare karakterer. Indeholder bl.a. a-z, A-Z og 0-9
128- 255"Udvidet" ASCII


En oversigt kan ses her: UTF-8



Opsætning

Når tegnsæt til et site er bestemt (in casu UTF-8) skal der foretages opsætning ganske mange steder for at være helt sikker på et godt resiltat:


Editor

Det sikres, at den valgte editor er sat op til UTF-8.


CSS

Allerøverst (fra pos. 1 på linie 1) i CSS-filer indsættes:

@charset "utf-8";
/* CSS Document */


HTML

Øverst på alle HTML-sider (oftest via 'include') indsættes:

<head>
<meta content= "charset=UTF-8">


PHP

I PHP skal php.ini være sat op med:

; PHP's default character set is set to UTF-8.
; http://php.net/default-charset
default_charset = "UTF-8"


Opkobling til MySQL

Rutinen / includen til opkobling til MySQL ('db_connect') bør også have en reference til det anvendte segnsæt:

Hele rutinen kan se sådan ud:

<?php
$host = "localhost";
$user = "root";
$password = ""; // På Mac skal password typisk være "root" også
$database = "projektnavn";
// Opret forbindelse til databasen
$db_link = mysqli_connect ($host, $user, $password, $database) or die (mysqli_error());
// Følgende linje sørger for, at du kan udskrive ÆØÅ korrekt
mysqli_query ($db_link, "SET NAMES 'utf8'");
?>


MySQL

I MySQL skal både den enkelte database, dens tabeller og disses felter sættes op med tegnsæt


Database

Databasenavn | Tegnsæt(sortering) utf8_danish_ci


Tabel

Tegnsæt (sortering): utf8_danish_ci


Felter

felttype utf8_danish_ci


$_POST

Ved indlæsning fra form til variabel med $_POST skal bruges:

$variabelnavn = htmlspecialchars (trim($_POST['feltnavn']),ENT_QUOTES, "utf-8");

trim() fjerner evt. foran- og efterstillede blanke tegn.


htlmspcialcahracters() konverterer evt. forekomster i tekster af de 5 tegn: >, <, ', " og ? til <...-tegn. Dette for at undgå at teksterne forvirrer PHP der også bruger disse tegn.


En 'søster' til htlmspcialcahracters - htmlentities - må ikke benyttes.
Udover de 5 ovennævnte tegn konverterer den mindst et par hundrede andre tegn - bl.a æ, ø, å, Æ, Ø og Å.
æ, ø og å bliver godt nok skrevet korrekt ud med 'echo', men ved sortering med f.eks. 'order by xxx asc' bliver de vist før 'a'.






















x
x