ID:               44041
 Updated by:       [EMAIL PROTECTED]
 Reported By:      trickie at gmail dot com
 Status:           Wont fix
 Bug Type:         *General Issues
 Operating System: Gentoo Linux
 PHP Version:      5.2.5
 New Comment:

You may also want to look at http://pecl.php.net/package/intl


Previous Comments:
------------------------------------------------------------------------

[2008-02-07 07:40:23] trickie at gmail dot com

Thanks for the tip.

------------------------------------------------------------------------

[2008-02-07 00:42:29] [EMAIL PROTECTED]

The "garbage" you get is a non-breaking space in UTF-8. You can always
use utf_decode() on it:

<?php
if (false !== setlocale(LC_ALL, 'lv_LV.UTF-8')) {
    $locale_info = localeconv();
    echo number_format(20000,0,$locale_info['decimal_point'],
utf8_decode($locale_info['thousands_sep']));
}
?>

Since unicode support is coming in PHP6 and will not be addressed
before, this is "wont fix" in earlier versions.

I suggest you really don't use setlocale() if you want to use UTF-8.
At least not for numbers.


------------------------------------------------------------------------

[2008-02-05 07:31:30] trickie at gmail dot com

Output requested:

array(18) {
  ["decimal_point"]=>
  string(1) ","
  ["thousands_sep"]=>
  string(2) "&#65533;&#65533;"
  ["int_curr_symbol"]=>
  string(4) "LVL "
  ["currency_symbol"]=>
  string(2) "Ls"
  ["mon_decimal_point"]=>
  string(1) ","
  ["mon_thousands_sep"]=>
  string(2) "&#65533;&#65533;"
  ["positive_sign"]=>
  string(0) ""
  ["negative_sign"]=>
  string(1) "-"
  ["int_frac_digits"]=>
  int(2)
  ["frac_digits"]=>
  int(2)
  ["p_cs_precedes"]=>
  int(1)
  ["p_sep_by_space"]=>
  int(1)
  ["n_cs_precedes"]=>
  int(1)
  ["n_sep_by_space"]=>
  int(1)
  ["p_sign_posn"]=>
  int(3)
  ["n_sign_posn"]=>
  int(3)
  ["grouping"]=>
  array(2) {
    [0]=>
    int(3)
    [1]=>
    int(3)
  }
  ["mon_grouping"]=>
  array(2) {
    [0]=>
    int(3)
    [1]=>
    int(3)
  }
}

------------------------------------------------------------------------

[2008-02-05 05:09:48] [EMAIL PROTECTED]

What does this output:

<?php
if (false !== setlocale(LC_ALL, 'lv_LV.UTF-8')) {
  $locale_info = localeconv();
  var_dump($locale_info);
}
?>

------------------------------------------------------------------------

[2008-02-04 15:18:20] trickie at gmail dot com

Description:
------------
If you set the locale to 'lv_LV.UTF-8' and have the locale generated on
your system, then the code below will return garbage as the 'thousands
separator'. It displays ok for me when running with CLI SAPI

Reproduce code:
---------------
<?php
if (false !== setlocale(LC_ALL, 'lv_LV.UTF-8')) {
    $locale_info = localeconv();
    echo number_format(20000,0,$locale_info['decimal_point'],
$locale_info['thousands_sep']);
}
?>


Expected result:
----------------
20 000

Actual result:
--------------
20&#65533;000


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=44041&edit=1

Reply via email to