json icon indicating copy to clipboard operation
json copied to clipboard

Parsing the unicode string got the wrong result

Open pigLoveRabbit520 opened this issue 1 year ago • 7 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

pigLoveRabbit520 avatar Jan 23 '24 06:01 pigLoveRabbit520

image

I cannot reproduce this.

nlohmann avatar Jan 23 '24 18:01 nlohmann

On Linux I also got the right answer. but I am using Windows and visual studio. On windows I got the wrong answer.

pigLoveRabbit520 avatar Jan 26 '24 10:01 pigLoveRabbit520

Can you show the output of data.dump(-1, ' ', true)? This should show \u7ec4, but I want to be sure.

nlohmann avatar Jan 26 '24 10:01 nlohmann

@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 avatar Jan 27 '24 18:01 syoyo

@syoyo I have changed the codepage to 65001, however, I got the wrong result image

pigLoveRabbit520 avatar Jan 29 '24 01:01 pigLoveRabbit520

Please check my previous comment and post the output of dump

nlohmann avatar Jan 29 '24 05:01 nlohmann

(And since I'm neither familiar with Chinese nor Windows - could there be an issue with the font?)

nlohmann avatar Jan 29 '24 17:01 nlohmann