---
title: "rename(), å ä ö blir \" \" \" ?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/163174-rename-å-ä-ö-blir"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "axed"
published: "2007-08-04T14:45:55.000Z"
updated: "2007-08-08T21:24:39.000Z"
replies: 9
views: 947
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/163174-rename-å-ä-ö-blir"
---

# rename(), å ä ö blir " " " ?

## #1 — axed, 2007-08-04T14:45Z

Försöker byta namn på en massa filer i en katalog. Vill att om filen innehåller å, ä eller ö så ska det bytas mot a, a eller o. T ex Övrigt.txt ska bli Ovrigt.txt osv.

Använder koden nedan:

```php

$search = array('å', 'ä', 'ö', 'Å', 'Ä', 'Ö');
$replace = array('a', 'a', 'o', 'A', 'A', 'O');

rename($file, str_replace($search, $replace, $file));
```

Men alla å, ä eller ö ändras till tecknet ". Alltså t ex "vrigt.txt.

Vad kan vara problemet?

Permalänk: https://www.webforum.nu/p/163174

## #2 — itpastorn, 2007-08-05T09:32Z

Teckenkodningen kan vara ett problem. UTF-8 kontra ISO-8859-1.

Kär du på Linux, som normalt har UTF-8, eller på Windows eller rentav Mac?

Permalänk: https://www.webforum.nu/p/2011889

## #3 — axed, 2007-08-05T13:10Z

Jag kör på Windows. Men servern där sidan ska ligga sen kör med Linux. Nått man måste tänka på då? Har alltså endast testat på en windows-maskin nu.

Permalänk: https://www.webforum.nu/p/2011938

## #4 — itpastorn, 2007-08-06T14:35Z

1\. Vad har du för teckenkodning på själva PHP-skriptet? Redan idag kan man ha UTF-8 utan att PHP klagar?

2\. Testa följande - förutsatt att du har $file och att det är en textsträng med filens namn:

```php
// Ingen output före denna!
header('Content-type: text/html;charset=iso-8859-1');

// I stället för konvertering - kolla nuvarande värden:
echo "<pre>\n";
var_dump($file);
$utf8file = utf8_encode($file);
var_dump($utf8file);
$isofile = utf8_decode($file);
var_dump($isofile);
```

För vilken av de tre (om någon) syns det riktiga tecken?

Permalänk: https://www.webforum.nu/p/2012174

## #5 — axed, 2007-08-06T19:23Z

Får följande resultat om jag provar med filen Övrigt.txt

string(10) "Övrigt.txt"
string(11) "Ã–vrigt.txt"
string(9) "?rigt.txt"

Permalänk: https://www.webforum.nu/p/2012272

## #6 — itpastorn, 2007-08-07T20:47Z

OK, du har som standard iso-8859-1 eller den kompatibla (vad gäller åäö) Windows-kodningen.

Låt oss flytta fokus till rename()

Om du bara kör str_replace och pausar efter den operationen med var_dump() så torde du ha rätt namn?

Om så är fallet har vi nog stött på en bugg i rename() men ingen finns rapporterad på bugs.php.net...

Permalänk: https://www.webforum.nu/p/2012580

## #7 — axed, 2007-08-08T09:59Z

str_replace funkar som den ska, använder samma kod på andra ställen och då byts å ä ö till a a o.

Permalänk: https://www.webforum.nu/p/2012660

## #8 — itpastorn, 2007-08-08T16:33Z

Tja, jag vet i vart fall inte svaret på din fråga :-( Det verkar som det är någon lsgas bugg i rename...

Vad händer om du kör copy + unlink?

Någon annan som har en idé?

Permalänk: https://www.webforum.nu/p/2012721

## #9 — axed, 2007-08-08T19:32Z

copy och unlink verkar fungera utan problem. Det är inte hela världen att rename inte funkar, lite irriterande dock. Tack för förslag iaf.

Permalänk: https://www.webforum.nu/p/2012767

## #10 — fiddler, 2007-08-08T21:24Z

Inga nya idéer direkt...
Jag testade din kod lokalt på min dator (WinXP - PHP5) och fick det att fungera utan problem.
Märkligt...

Permalänk: https://www.webforum.nu/p/2012804

---

Tråden på webben: https://www.webforum.nu/amne/php/163174-rename-å-ä-ö-blir
