Niels Gamborgs online notesbog

Opdatering af WordPress. Problemer med æ, ø og å. Forsvundne danske bogstaver.

januar 19th, 2008. Kategori: Wordpress

Problemer med de danske tegn æ, ø og å

Efter at have opdateret min wordpress fra 2.0 til 2.3.2, blev alle mine æ, ø og å‘er  lavet om til ulæselige tegn. Jeg havde tidligere kørt en engelsk udgave af wordpress. Jeg ved ikke om det har været årsagen eller medvirkende til problemet.

En søgning viste, at det er et kendt problem, at de danske tegn bliver ændret eller forsvinder, når man opdaterer sin wordpress. Der findes en række mere eller mindre fantasifulde løsninger, lige fra manuel rettelse af alle sine gamle indlæg, over geninstallation af database og worpress, til diverse plug-ins, der angivelige skulle kunne løse problemet.

Tegnsætsproblemer kan drille meget, men jeg var heldig. Database opdateringerne havde tilsyneladende ikke ødelagt mine data. Skulle bare ændre tegnsættet i wp-config.php fra utf8 til ISO-8859-1.

Løsningen

wp-config.php før:

define(‘DB_NAME’, ‘minDatabase’); // Databasenavnet
define(‘DB_USER’, ‘minDatabase’); // Dit MySQL-brugernavn
define(‘DB_PASSWORD’, ‘mitKodeOrd’); // … og kodeord
define(‘DB_HOST’, ‘localhost’); // 99% chance for at du ikke skal rette her

define(‘DB_CHARSET’, ‘utf8);
define(‘DB_COLLATE’, ”);

wp-config.php efter:

define(‘DB_NAME’, ‘minDatabase’); // Databasenavnet
define(‘DB_USER’, ‘minDatabase’); // Dit MySQL-brugernavn
define(‘DB_PASSWORD’, ‘mitKodeOrd’); // … og kodeord
define(‘DB_HOST’, ‘localhost’); // 99% chance for at du ikke skal rette her

define(‘DB_CHARSET’, ‘ISO-8859-1’);
define(‘DB_COLLATE’, ”);

Ganske simpelt og alle mine ø, æ og å’er var tilbage. På nær i denne ene “undskyld jeg roder, mens jeg opdaterer WordPress” – post, som jeg havde nået at lave med utf8 tegnsættet.

En mere elegant løsning

Anders Saugstrup har senere gjort mig opmærksom på, at dette tegnsætsproblem kan løses langt lettere og mere elegant.

define(‘DB_NAME’, ‘minDatabase’); // Databasenavnet
define(‘DB_USER’, ‘minDatabase’); // Dit MySQL-brugernavn
define(‘DB_PASSWORD’, ‘mitKodeOrd’); // … og kodeord
define(‘DB_HOST’, ‘localhost’); // 99% chance for at du ikke skal rette her
define(‘DB_CHARSET’, ‘utf-8);
define(‘DB_COLLATE’, ”);

Løsningen er ganske simpelt at skrive utf-8. Altså med en bindestreg. Det løser hele tegnsætsproblemet, og du har både dine æ, ø og å tilbage.

Ifølge Anders kan en medvirkende årsag til de forsvunde danske bogstaver, være at man opdaterer over flere versionsnumre. Så risikoen for at miste æ, ø og å er altså større hvis man opgradere fra f.eks. 2.3 til 2.6. og springer de mellemliggende versioner over.

OBS: Det kan også have betydning, hvordan at uft-8 skrives. Det kan være vigtigt, at det står med små bogstaver. Altså utf-8 og ikke UTF-8. Tak til Jacob for det tip.

  1. 11 Responses to “Opdatering af WordPress. Problemer med æ, ø og å. Forsvundne danske bogstaver.”

  2. By Potter on jan 19, 2008

    Har samme problem – men kun med mit feed. Jeg prøvede dit trick, men får at vide, at der er fejl i linie 7 🙁

    Leder videre, men jeg døjer meget med de danske problemer….

  3. By Niels on jan 19, 2008

    Hej Potter.

    Tegnsæts problemer kan virkelig være noget rod.
    Tegnsættet i min RSS-feed er UTF-8. Den bliver tilsyneladende ikke sat af wp-config.php. Sådan ser XML deklarationen ud i min RSS feed:
    <?xml version=”1.0″ encoding=”UTF-8″ ?>
    og det virker fint med æ, ø og å

    Men det virker som om du har større problemer med din RSS end tegnsættet. Jeg kan slet ikke åbne den, men får istedet en fejlmeddelse.

    Har du været ved at sætte din RSS feed op manuelt?

  4. By Anders Saugstrup on mar 3, 2008

    Der er altså et eller andet spøjst med skift mellem den danske og den engelske version.

    Jeg har aldrig oplevet problemer med æøå på rene engelske installationer / opgraderinger mv. Kun når en dansk version eller flere er blandet ind under vejs.

    Er det også din erfaring?

  5. By Niels on mar 3, 2008

    Ja. Det var også det, jeg også oplevede, da jeg opdaterede.

    Men ellers er min erfaring, at hvis man roder med kode lang tid nok, så løber du ind i tegnsæts problemer.

    Især hvis der f.eks. er blandet AJAX, XML eller MySQL ind i det. Eller måske mere præcist. Når man udveksler data mellem forskellige sprog/teknologier.

  6. By Brian Brandt on mar 4, 2008

    Jeg har som regel brugt plugin “slugger” , hvilket selv retter alle dine æøå til noget forståeligt som “ae”, “oe” og “aa” …

    kan findes her
    http://neurox.dk/wordpress-plugins/

    men vær opmærksom på, at så virker den manuelle “slug angivelse” ikke! (hvilket er grunden til at jeg har slået den fra igen… men den har rettet alle æøå)

  7. By Niels on mar 4, 2008

    Interssant plugin, Brian.

    Det sker af og til, at jeg glemmer at angive slug’en manuelt. Så jeg vil lige tjekke det ud.

  8. By Peter on maj 3, 2009

    Du er dagens mand i skysovs. Tak for hjælpen!

  9. By HF on okt 7, 2009

    Dejlig nemt og løste alle problemer 🙂

  10. By Mathias on jan 28, 2010

    Godt tip!

  11. By Jacob on maj 9, 2010

    Til jer der ikke kan få dette til at virke, HUSK at det skal stå med småt. eks: “utf-8” Og ikke “UTF-8”.

    Jeg fik det nemelig først til at virke da jeg skrev det med små bukstaver. XD

  12. By Niels on maj 9, 2010

    Tak for feedback, Jacob.

    Jeg har tilføjet dit tip til indlægget.

Skriv en kommentar