nlohmann / json

JSON for Modern C++

Home Page:https://json.nlohmann.me

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

should get but got

image

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

image

I cannot reproduce this.

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
image

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?)