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-8](/felles/ikoner/rodfir1.gif) | Omfattende 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-8](/felles/ikoner/rodfir1.gif) | Forholdsvis enkel (blokvis) oversigt over UTF-8 tegn. |
![UTF-8](/felles/ikoner/rodfir1.gif) | W3 "encoding" arb.gruppe |
![Navngivne tegn](/felles/ikoner/rodfir1.gif) | Oversigt 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 - 31 | Styrekarakterer |
32 - 127 | Printbare karakterer. Indeholder bl.a. a-z, A-Z og 0-9 |
128- 255 | "Udvidet" ASCII |
En oversigt kan ses her: ![UTF-8](/felles/ikoner/rodfir1.gif)
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
$_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'.
|