Parsing the unicode string got the wrong result
pigLoveRabbit520 opened this issue · comments
Description
unicode string "\u7ec4" should get "组" but got "缁"
Reproduction steps
copy latest json.hpp
to vs C++ project and write the code below.
Expected vs. actual results
Minimal code example
#include <fstream>
#include <iostream>
#include "json.hpp"
using json = nlohmann::json;
int main()
{
std::ifstream f("data.json");
json data = json::parse(f);
std::string name = data.at("name");
std::cout << name << std::endl;
return 0;
}
json data
{
"name" : "\u7ec4"
}
### Error messages
```Shell
no error
Compiler and operating system
vs 2022 and windows 11
Library version
version 3.11.3
Validation
- The bug also occurs if the latest version from the
develop
branch is used. - I can successfully compile and run the unit tests.
On Linux I also got the right answer. but I am using Windows and visual studio.
On windows I got the wrong answer.
Can you show the output of data.dump(-1, ' ', true)
? This should show \u7ec4
, but I want to be sure.
@pigLoveRabbit520 Confirmed its an issue of your Console codepage. You are using cp936(Simplified Chinese). It prints 组 as 缁. chcp 65001(UTF8) should print 组 as 组. So its not the issue of nlomann json.
@syoyo I have changed the codepage to 65001, however, I got the wrong result
Please check my previous comment and post the output of dump
(And since I'm neither familiar with Chinese nor Windows - could there be an issue with the font?)