ID: 44041
Updated by: [EMAIL PROTECTED]
Reported By: trickie at gmail dot com
-Status: Open
+Status: Wont fix
Bug Type: *General Issues
Operating System: Gentoo Linux
PHP Version: 5.2.5
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[2008-02-05 07:31:30] trickie at gmail dot com
Output requested:
array(18) {
["decimal_point"]=>
string(1) ","
["thousands_sep"]=>
string(2) "��"
["int_curr_symbol"]=>
string(4) "LVL "
["currency_symbol"]=>
string(2) "Ls"
["mon_decimal_point"]=>
string(1) ","
["mon_thousands_sep"]=>
string(2) "��"
["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�000
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=44041&edit=1