LINUX.ORG.RU

expat & koi-8


0

0

ничерта не получается с XML_SetUnknownEncodingHandler. Кто-нибудь готов помочь, или кинуть рабочий пример?

anonymous

static int
encoding_hnd(void *data, const XML_Char *name, XML_Encoding *info)
{
  int i;
  iconv_t conv_hnd;
  unsigned char in_buf[16], out_buf[16];
  char *p_in_buf, *p_out_buf;
  size_t in_size, out_size, conv_size;

  if ((conv_hnd = iconv_open("utf-16le", name)) == (iconv_t) -1)
    return 0;

  info->data = 0;
  info->convert = 0;
  info->release = 0;

  /* fill up the translation table */
  /* FIXME: this supports only one byte encodings */
  for (i = 0; i < 256; i++) {
    in_size = 1;
    p_in_buf = in_buf;
    in_buf[0] = i;
    out_size = sizeof(out_buf);
    p_out_buf = out_buf;
    conv_size = iconv(conv_hnd, &p_in_buf, &in_size, &p_out_buf, &out_size);
    if (conv_size == (size_t) -1) {
      info->map[i] = '?';
      out_size = sizeof(out_buf);
      p_out_buf = out_buf;
      // reset the shift state
      iconv(conv_hnd, 0, 0, &p_out_buf, &out_size);
    } else {
      info->map[i] = out_buf[0] | (out_buf[1] << 8);
    }
  }

  iconv_close(conv_hnd);
  return 1;
}

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.