#46267 [Opn->Csd]: mismatch between sscanf and localeconv

From: Date: Fri, 20 Nov 2009 13:14:51 +0000
Subject: #46267 [Opn->Csd]: mismatch between sscanf and localeconv
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-3288@lists.php.net to get a copy of this message
 ID:               46267
 Updated by:       vrana@php.net
 Reported By:      oswald at jaskolla dot net
-Status:           Open
+Status:           Closed
 Bug Type:         Documentation problem
 Operating System: *
 PHP Version:      5.2.6
 New Comment:

This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation
better.




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

[2009-11-20 13:14:49] svn@php.net

Automatic comment from SVN on behalf of vrana
Revision: http://svn.php.net/viewvc/?view=revision&revision=291079
Log: Document sprintf differences (bug #46267)

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

[2008-10-10 06:33:14] juwe at clasennet dot de

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)

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

[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



Thread (1 message)

  • vrana@php.net
  • Unknown Message
    • vrana@php.net
« previous php.doc.bugs (#3288) next »