// Writes a scalar value as a percent-encoded sequence of UTF8 bytes, per RFC 3987. protected override void WriteEncodedScalar(ref Writer writer, uint value) { uint asUtf8 = (uint)UnicodeHelpers.GetUtf8RepresentationForScalarValue(value); do { char highNibble, lowNibble; HexUtil.ByteToHexDigits((byte)asUtf8, out highNibble, out lowNibble); writer.Write('%'); writer.Write(highNibble); writer.Write(lowNibble); } while ((asUtf8 >>= 8) != 0); }