JSON toString()返回错误的数据异常

时间:2016-03-12 20:42:50

标签: d

我收到以下异常

  

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。有什么方法可以解决这个问题吗?

1 个答案:

答案 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编码,它是一个控制字符。