[ 
https://issues.apache.org/jira/browse/THRIFT-2870?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14333261#comment-14333261
 ] 

Simon Falsig commented on THRIFT-2870:
--------------------------------------

Your patch works fine on our machines too. Had to tweak it slightly to get it 
to apply to the Thrift 0.9 that we're still using in production, but nothing 
that changes any of the functionality.

Thanks for the help!

> C++ TJSONProtocol using locale dependent formatting
> ---------------------------------------------------
>
>                 Key: THRIFT-2870
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2870
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.9
>         Environment: Linux, Boost 1.51
>            Reporter: Simon Falsig
>         Attachments: failing.txt, fixed.txt, initial.txt, 
> json_double_with_boost_math.patch, use-classic-locale-for-cpp-json_4.patch
>
>
> I'm using Thrift for serializing objects (in C++) into JSON strings, which I 
> then store as files. This usually works fine, but if the locale of my system 
> is set to a locale where the decimal separator is ',' instead of '.' (for 
> instance in Denmark), then the TJSONProtocol (specifically the 
> writeJSONDouble function that does the double to string conversion through a 
> boost::lexical_cast) will also use this separator when serializing doubles. 
> This kinda plays havoc with the JSON specification, which does not allow for 
> localized formatting, and depends on always using '.' as a decimal separator. 
> I could imagine that there may be other more subtle places where the local 
> can have an effect, but this is currently the only place I've been having 
> trouble with.
> I can see that the same problem has been fixed for C# (commit
> 3da317bda100130b2f615034c46b0944888f0f14 / THRIFT-1245 C# JSON Protocol uses 
> culture-dependant decimal separator for double) but it doesn't seem as if 
> there's a similarly easy way to fix boost::lexical_cast...
> Note that I'm using Thrift 0.9.0, but as far as I can see there hasn't been 
> any relevant changes to TJSONProtocol.cpp since.
> Relevant thread on thrift-user mailing list can be found here: 
> http://mail-archives.apache.org/mod_mbox/thrift-user/201412.mbox/%3c7c2463f510dbb7548b4718e202ac1...@mail.gmail.com%3e
> I've also attached a quick patch that works on my setup (see the patch file 
> comments for more information).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to