Exemplo n.º 1
0
        public static TextWriter WriteEscapedHexString(TextReader reader, TextWriter writer, Predicate <char> shouldEscapeChar)
        {
            var chars    = new char[1];
            var encoding = Encoding.UTF8;

            var buffer = new byte[encoding.GetMaxByteCount(1)];

            return(reader.ConvertAndDump(writer, (c, w) =>
            {
                if (c == '%' || shouldEscapeChar(c))
                {
                    chars[0] = c;

                    var bytecount = encoding.GetBytes(chars, 0, 1, buffer, 0);

                    for (int j = 0; j < bytecount; j++)
                    {
                        w.Write('%');
                        w.Write(HexValues[(buffer[j] & '\x00f0') >> 4]);
                        w.Write(HexValues[(buffer[j] & '\x00f0') >> 4]);
                    }
                }
                else
                {
                    w.Write(c);
                }
            }));
        }
Exemplo n.º 2
0
        public static TextWriter WriteEscapedHexString(TextReader reader, TextWriter writer, Predicate<char> shouldEscapeChar)
        {
            var chars = new char[1];
            var encoding = Encoding.UTF8;

            var buffer = new byte[encoding.GetMaxByteCount(1)];

            return reader.ConvertAndDump(writer, (c, w) =>
            {
                if (c == '%' || shouldEscapeChar(c))
                {
                    chars[0] = c;

                    var bytecount = encoding.GetBytes(chars, 0, 1, buffer, 0);

                    for (int j = 0; j < bytecount; j++)
                    {
                        w.Write('%');
                        w.Write(HexValues[(buffer[j] & '\x00f0') >> 4]);
                        w.Write(HexValues[(buffer[j] & '\x00f0') >> 4]);
                    }
                }
                else
                {
                    w.Write(c);
                }
            });
        }