Skip to content

Encoding support (zh)

haibo2.liu edited this page Sep 29, 2022 · 2 revisions

多字符类型支持

configor 支持 charwchar_t 等多种字符类型。

对于 wchar_t 类型,可使用下面的别名来使用宽字符版本:

json::value   // char
wjson::value  // wchar_t

宽字符版本用法和窄字符相同:

wjson j = wjson::parse(L"{ \"name\": \"中文测试\" }");
std::wstring str = j[L"name"].get<std::wstring>();

不同的字符类型可以相互转换:

json::value j; // 窄字符版本 json value

// char-value --> wchar_t-string
std::wstring str = json::dump<wchar_t>(j);

// wchar_t-string --> char-value
j = json::parse<wchar_t>(str);

对 char16_t 和 char32_t 字符类型需要使用下面的别名

struct u16value_tpl_args : value_tplargs
{
    using char_type = char16_t;
};

struct u32value_tpl_args : value_tplargs
{
    using char_type = char32_t;
};

// char16_t
using u16json = configor::basic_json<u16value_tpl_args>;
// char32_t
using u32json = configor::basic_json<u32value_tpl_args>;

由于C++标准库并不支持 char16_t 和 char32_t 的IO流,在不同的平台和编译器上可能会有不同表现。

编码支持

configor 具有完备的 unicode 支持,内建的 encoding 有以下几种:

编码 说明
encoding::ignore 不进行编解码
encoding::auto_utf 根据 char_type 自动处理 Unicode(默认)
encoding::utf8 UTF-8
encoding::utf16 UTF-16
encoding::utf32 UTF-32

序列化和反序列化时可以设置编码

// 使用 utf8 编码
json::parse(str, { json::parser::with_encoding<encoding::utf8>() });
json::dump(j, { json::serializer::with_encoding<encoding::utf8>() });

Overview

  • Quick start ( en | zh )
  • Examples ( en | zh )

Features

  • Value operation ( en | zh )
  • Serialization ( en | zh )
  • Custom conversion ( en | zh )
  • Encoding support ( en | zh )

Other

  • Q&A ( en | zh )
  • Advanced ( en | zh )
Clone this wiki locally