https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=234010
Bug ID: 234010 Summary: Lack of Unicode support in strfmon breaks monitary formatting Product: Base System Version: 11.2-RELEASE Hardware: amd64 OS: Any Status: New Severity: Affects Some People Priority: --- Component: misc Assignee: b...@freebsd.org Reporter: j...@herrskogen.se This bug was manifested when using the PHP function money_format and LC_MONETARY sv_SE.UTF-8 to format some currency. Instead of a space as the thousand separator, it was a ?-symbol. I'm not very good at this, but this is what I have come up with: * FreeBSD is retrieving locale data from http://cldr.unicode.org * In at least sv_SE.UTF-8, the value ending up as monitary thousand separator is a unicode character (C2 A0). * localeconv is fetching the data in /usr/share/locale/sv_SE.UTF-8/LC_MONETARY and returning a pointer. * __format_grouped_double (with the description "convert double to ASCII") is calling localeconv to fetch the thousand separator and seems to only use the first byte (C2). * strfmon is calling __format_grouped_double to format the grouping of the string and returns bad strings when using locales with unicode characters. How to reproduce: setlocale(LC_MONETARY, "sv_SE.UTF-8"); int i; strfmon(buf, sizeof(buf), "%i", money); printf("%s\n", buf); for(i=0; i<sizeof(buf); i++) { printf("%2d - %i \n", i, buf[i]); } -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ freebsd-bugs@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"