Проблема с PHP localeconv () - возможно, UTF-8 - PullRequest
0 голосов
/ 14 мая 2010

У меня проблема с localeconv() в PHP. Я использую ПК с Windows.

Я установил свой язык на Францию, используя функцию setLocale(LC_ALL, 'fra_fra'). Затем я вызываю функцию localeconv() для переменной. Когда я выведу эту переменную, я получу следующее.


Array
(
    [decimal_point] => ,
    [thousands_sep] => �
    [int_curr_symbol] => EUR
    [currency_symbol] => �
    [mon_decimal_point] => ,
    [mon_thousands_sep] => �
    [positive_sign] => 
    [negative_sign] => -
    [int_frac_digits] => 2
    [frac_digits] => 2
    [p_cs_precedes] => 0
    [p_sep_by_space] => 1
    [n_cs_precedes] => 0
    [n_sep_by_space] => 1
    [p_sign_posn] => 1
    [n_sign_posn] => 1
    [grouping] => Array
        (
            [0] => 3
        )

    [mon_grouping] => Array
        (
            [0] => 3
        )

)

Я не уверен, что это проблема с отображением UTF-8. Я сделал следующее:

  1. Установите для моего default_charset в PHP.ini значение UTF-8
  2. Тип контента на моей странице - UTF-8
  3. Я также назвал то же самое в заголовке, т.е. header('Content-type: text/html; charset=utf-8')
  4. Я использую Firefox и там тоже сменил кодировку, все равно не повезло
  5. Я также обновил свой файл http.conf с AddDefaultCharset, но сигары по-прежнему нет

Я полностью в замешательстве и не знаю, что делать дальше.

Кто-нибудь может помочь?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 14 мая 2010

Я думаю, ваш вывод не UTF-8. Попробуйте использовать UTF-8-locale, например, fr_fr.UTF-8 или fr_fr.utf8 в большинстве * nix-систем.

Кстати: вы уверены в fra_fra -locale? Разве это не должно быть fr_fr для французского?

1 голос
/ 16 мая 2010

Я наконец-то заставил это работать, т.е. чтобы отображались правильные символы.

Просто сделайте следующее (обратите внимание, что это для Windows):

iconv('Windows-1252', 'UTF-8', $locale_conv_arr['currency_symbol']);

Где $locale_conv_arr представляетмассив, ранее определенный в моем вопросе.

Спасибо Stefan Gehrig за направление.

Приветствия.

0 голосов
/ 24 июня 2013

Существует расширение PHP, называемое "intl", которое предоставляет информацию о локали, не используя функции операционной системы: оно использует UTF-8 исключительно случайно, избегая этой проблемы.

http://www.php.net/manual/en/book.intl.php

Так как это был ТАК вопрос, который возник, когда я искал помощи по этому вопросу, я хотел убедиться, что есть ссылка ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...