ID:               46267
 Comment by:       juwe at clasennet dot de
 Reported By:      oswald at jaskolla dot net
 Status:           Open
 Bug Type:         Strings related
 Operating System: Windows XP, Linux
 PHP Version:      5.2.6
 New Comment:

This problem goes a little deeper than sscanf/fscanf not being
locale-aware:

While sprintf & co support the modifiers F,G and b, sscanf and fscanf
do not. Furthermore sscanf/fscanf understand the modifiers D,i and n,
while sprintf & co clearly do not.

Unfortunately the documentation for sscanf/fscanf refers to the
documentation of sprintf for an explanation of the syntax for it's
format argument. 

IMHO this is mostly a documentation problem, but it would be nice for
both types of function to accept the same format syntax (as much as
possible given the different focus)


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

[2008-10-10 00:53:57] oswald at jaskolla dot net

I am sorry for seeming to spam this bug report. The "Edit Submission"
tab made me think I could edit my actual submission without posting a
comment. My guess was that this was the idea behind requiring me to
enter the password. Obviously I was wrong and like to apologize.

My actual intention of editing the submission was, to turn π into
the greek letter that designates the ration between the diameter and the
area of a circle and to turn ≈ into the symbol that usually
designates similarity (something is messed up somewhere on the road: my
clipboard -> my browser -> your web application -> your database -> your
web application -> my browser).

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

[2008-10-10 00:43:23] oswald at jaskolla dot net

Description:
------------
sscanf() seems not to be locale-aware when interpreting '%f', even
though the documentation says it is. localeconv() says that after my
call to setlocale(), the comma is interpreted as decimal separator.
Still everything after the comma is omitted.

Tested environments:
Windows XP, PHP 5.2.5, Apache 2.2.8 (mpm_winnt)
Linux 2.6.9, PHP 5.2.6RC1, Apache 2.2.8 (prefork)

Reproduce code:
---------------
setlocale(LC_ALL, array('de_DE.utf-8', 'german'));
$value = sscanf('3,14159265', '%f');
echo '<div>parsed: &pi; &asymp; ', $value[0], '</div>';
echo '<div>formatted: &pi; &asymp; '; printf('%f', 3.14159265); echo
'</div>';

Expected result:
----------------
parsed: &#960; &#8776; 3.14159265
formatted: &#960; &#8776; 3,14159265

Actual result:
--------------
parsed: &#960; &#8776; 3
formatted: &#960; &#8776; 3,14159265

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

[2008-10-10 00:40:06] oswald at jaskolla dot net

Description:
------------
sscanf() seems not to be locale-aware when interpreting '%f', even
though the documentation says it is. localeconv() says that after my
call to setlocale(), the comma is interpreted as decimal separator.
Still everything after the comma is omitted.

Tested environments:
Windows XP, PHP 5.2.5, Apache 2.2.8 (mpm_winnt)
Linux 2.6.9, PHP 5.2.6RC1, Apache 2.2.8 (prefork)

Reproduce code:
---------------
setlocale(LC_ALL, array('de_DE.utf-8', 'german'));
$value = sscanf('3,14159265', '%f');
echo '<div>parsed: &pi; &asymp;', $value[0], '</div>';
echo '<div>formatted: &pi; &asymp;'; printf('%f', 3.14159265); echo
'</div>';


Expected result:
----------------
parsed: &#960; &#8776;3.14159265
formatted: &#960; &#8776;3,14159265

Actual result:
--------------
parsed: &#960; &#8776;3
formatted: &#960; &#8776;3,14159265



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


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

Reply via email to