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) "��" ["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
