2013-08-08 2 views
0

Я создал сайт с использованием кодировки iso-8859-1, и я хочу отобразить дату на французском языке.проблемы с PHP setlocale и iso-8859-1 кодировка

Вот файл я использую для тестирования:

<!DOCTYPE html> 
<html lang="fr"> 
    <head> 
     <meta charset="ISO-8859-1"/> 
    </head> 
    <body> 
     <?php setlocale(LC_ALL, "fr_FR.iso88591"); echo strftime("%A %d %B %Y."); ?> 
    </body> 
</html> 

Когда я открываю этот файл я получаю: Thursday 08 August 2013. вместо Jeudi 08 Août 2013. (французский).

Я попытался с помощью UTF-8 и она работает правильно, но это не то, что я хочу ...

Я проверил языковые пакеты, установленные на моем сервере, и все кажется правильным:

server$ sudo locale -a 
C 
C.UTF-8 
français 
french 
fr_FR 
fr_FR.iso88591 
fr_FR.utf8 
POSIX 

Если у вас есть идеи решить эту проблему, было бы очень круто.

EDIT: Опечатки исправлены!

+0

Вы хотите сказать setlocale? – Jonast92

+0

Да, я допустил ошибку, я имею в виду 'setlocale'. – EMG

ответ

2

У вас были опечатки. Изменение "SETLOCAL" и "8895-1"

<!DOCTYPE html> 
<html lang="fr"> 
    <head> 
     <meta charset="ISO-8895-1"/> 
    </head> 
    <body> 
     <?php setlocal(LC_ALL, "fr_FR.iso88951"); echo strftime("%A %d %B %Y."); ?> 
    </body> 
</html> 

к "Setlocale" и "8859-1", соответственно.

<!DOCTYPE html> 
<html lang="fr"> 
    <head> 
     <meta charset="ISO-8859-1"/> 
    </head> 
    <body> 
     <?php setlocale(LC_ALL, "fr_FR.iso88591"); echo strftime("%A %d %B %Y."); ?> 
    </body> 
</html> 
+0

О да, извините за это тоже ... Я исправляю эти (огромные) ошибки, но проблема все та же ... – EMG

0

Как я отмечал в своем комментарии, он должен быть setlocale, не SETLOCAL.

Быстрый поиск Google указал мне на this website, который указывает на то, что вы должны делать

setlocale(LC_ALL, "fr_FR.ISO-8859-1"); 

вместо

setlocal(LC_ALL, "fr_FR.iso88951"); 

EDIT:

Попробуйте это:

<?php 
setlocale(LC_ALL, "fr_FR.iso88591"); 
setlocale(LC_NUMERIC, 'C'); 
echo strftime("%A %d %B %Y."); 
?> 

Я не пробовал, но это того стоит.

+0

Это не работает. Я думаю, что строка должна быть такой же, как один из 'locale' ouput ... – EMG

+0

Я отредактировал мое сообщение. Это стоит того. Если это не так, я просто из-под контроля, извините. – Jonast92

+0

Нет, он все еще не работает ... Спасибо вам все равно – EMG

-1

опечатка в коде (SETLOCAL должен быть Setlocale):

<?php setlocale(LC_ALL, "fr_FR"); echo strftime("%A %d %B %Y."); ?> 

Кроме того, убедитесь французская локаль доступна на вашей системе:

locale -a 

Чтобы увидеть, что локали доступны (Unix) ,

+0

Да, это то, что я сделал (cf мой первый пост), и французский кажется доступным .. – EMG

+0

Невозможно проверить его локально для вас на французском языке. – RMK