JSON toString() returns 错误数据异常
JSON toString() returns bad data exception
我得到以下异常
std.json.JSONException@/build/src/ldc/runtime/phobos/std/json.d(1170): Illegal control character.
当我运行这段代码
import std.json;
void main(string[] args)
{
auto x = JSONValue(decodeComponent("%C2%8C")).toString();
}
有unicode字符但没有控制字符。由于某种原因,unicode \uc28c
变成了 \u008c
然后当它执行 toString()
时它说 \x00
是一个控制字符所以死了。
我运行在一个循环中 url 解码来自 url 查询字符串的键值对,有时这些值包含 unicode。有什么办法可以解决这个问题?
std.uri.decodeComponent 假定百分比编码值采用 UTF-8。
0xC2 0x8C不是U+C28C(HANGUL SYLLABLE SYUN)的UTF-8编码。那将是 0xEC 0x8A 0x8C。
0xC2 0x8C是U+008C(PARTIAL LINE BACKWARD)的UTF-8编码,是控制字符。
我得到以下异常
std.json.JSONException@/build/src/ldc/runtime/phobos/std/json.d(1170): Illegal control character.
当我运行这段代码
import std.json;
void main(string[] args)
{
auto x = JSONValue(decodeComponent("%C2%8C")).toString();
}
有unicode字符但没有控制字符。由于某种原因,unicode \uc28c
变成了 \u008c
然后当它执行 toString()
时它说 \x00
是一个控制字符所以死了。
我运行在一个循环中 url 解码来自 url 查询字符串的键值对,有时这些值包含 unicode。有什么办法可以解决这个问题?
std.uri.decodeComponent 假定百分比编码值采用 UTF-8。
0xC2 0x8C不是U+C28C(HANGUL SYLLABLE SYUN)的UTF-8编码。那将是 0xEC 0x8A 0x8C。
0xC2 0x8C是U+008C(PARTIAL LINE BACKWARD)的UTF-8编码,是控制字符。