PHP localeconv()的问题 - 也许是UTF-8

时间:2010-05-14 17:17:16

标签: php utf-8

我在PHP中遇到localeconv()的问题。我正在使用Windows PC。

我使用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. 将PHP.ini中的default_charset设置为UTF-8
  2. 我页面上的内容类型为UTF-8
  3. 我也在标题header('Content-type: text/html; charset=utf-8')
  4. 中调用了相同内容
  5. 我正在使用firefox并在那里更改了charset,仍然没有运气
  6. 我还用AddDefaultCharset更新了我的http.conf文件,但仍然没有雪茄
  7. 我完全难过,不知道接下来要做什么。

    任何人都可以帮忙吗?

    感谢。

3 个答案:

答案 0 :(得分:2)

我认为,您的输出 UTF-8。尝试在大多数* nix系统上使用UTF-8-locale,例如fr_fr.UTF-8fr_fr.utf8

顺便问一下:你确定fra_fra - 语言环境吗?法语不应该是fr_fr吗?

答案 1 :(得分:1)

我终于让它工作,即显示正确的字符。

请执行以下操作(请注意,这适用于Windows):

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

其中$locale_conv_arr表示我先前在我的问题中定义的数组。

感谢Stefan Gehrig的指导。

干杯。

答案 2 :(得分:0)

有一个名为“intl”的PHP扩展,它在不使用操作系统功能的情况下提供语言环境信息:它使用UTF-8专属afaics,避免了这个问题。

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

由于这是我在寻求帮助时出现的问题,我想确保有链接...