def _read_utf()

in dubbo/codec/decoder.py [0:0]


    def _read_utf(self, length):
        """
        读取n个字符
        :param length:
        :return:
        """
        value = u''
        for i in xrange(length):
            ch = self.read_byte()
            if ch < 0x80:
                value += unichr(ch)
            elif (ch & 0xe0) == 0xc0:
                ch1 = self.read_byte()
                value += unichr(((ch & 0x1f) << 6) + (ch1 & 0x3f))
            elif (ch & 0xf0) == 0xe0:
                ch1 = self.read_byte()
                ch2 = self.read_byte()
                value += unichr(((ch & 0x0f) << 12) + ((ch1 & 0x3f) << 6) + (ch2 & 0x3f))
            else:
                raise ValueError('Can\'t parse utf-8 char {}'.format(ch))
        return value.encode('utf-8')  # 将unicode转化为str类型