我收到以下异常
std.json.JSONException@/build/src/ldc/runtime/phobos/std/json.d(1170):非法控制角色。
当我运行此代码时
import std.json;
void main(string[] args)
{
auto x = JSONValue(decodeComponent("%C2%8C")).toString();
}
有unicode字符,但没有控制字符。由于某些原因,unicode \uc28c
变为\u008c
,然后当它toString()
时,它表示\x00
是一个控制角色,所以死了。
我在循环url中运行此代码,从url查询字符串解码键值对,有时值包含unicode。有什么方法可以解决这个问题吗?
答案 0 :(得分:3)
std.uri.decodeComponent假设百分比编码值为UTF-8。
0xC2 0x8C不是U + C28C的UTF-8编码(HANGUL SYLLABLE SYUN)。那将是0xEC 0x8A 0x8C。
0xC2 0x8C是U + 008C(PARTIAL LINE BACKWARD)的UTF-8编码,它是一个控制字符。