Russian Qt Forum
Ноябрь 23, 2024, 01:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: iconv utf-8  (Прочитано 8484 раз)
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« : Ноябрь 16, 2006, 13:19 »

Есть такая програмка

Код:
#include <stdio.h>
#include <iconv.h>
#include <errno.h>
#include <err.h>
#include <string.h>
#include <libintl.h>

int main() {
  textdomain("libiconv");
  iconv_t cd;
  size_t k, f, t;
  int se;
  char *code = "Вопрос!";
  char* in = code;
  char buf[100];
  char* out = buf;

  cd = iconv_open("WINDOWS-1251","UTF8");
  if( cd == (iconv_t)(-1) )
    err( 1, "iconv_open" );
  f = strlen(code);
  t = sizeof buf;
  memset( &buf, 0, sizeof buf );
  errno = 0;
  k = iconv(cd, &in, &f, &out, &t);
  se = errno;
  printf( "converted: %u,error=%d\n", (unsigned) k, se );

  printf("string: %s\n", buf);

  iconv_close(cd);
  return 0;
}

так в ней iconv спотыкается!

хотя если заменить

  cd = iconv_open("UTF8","WINDOWS-1251");

тогда все путем

вопрос ! почему не поддерживается utf8 -> utf8?
Записан
Negative
Гость
« Ответ #1 : Ноябрь 17, 2006, 13:12 »

у меня работает

что значит "спотыкается"?
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #2 : Ноябрь 20, 2006, 01:05 »

k = iconv(cd, &in, &f, &out, &t);

тут часто ошибку дает k==-1
Записан
Negative
Гость
« Ответ #3 : Ноябрь 20, 2006, 14:38 »

"часто" - это значит "не всегда"?
я правильно понял, что одна и та же программа периодически работает/неработает? Улыбающийся

могу предложить только strace'ом пройтись, может чего выловится.

с какими ключами компилишь, кстати?
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #4 : Ноябрь 22, 2006, 16:21 »

забил я на iconv
сделал свои таблицы перекодировки

слишком много жалоб на iconv в инете
Записан
yurror
Гость
« Ответ #5 : Февраль 16, 2007, 06:21 »

А зря. если открыть документацию там черным по белому написано что такая ситуация ВОЗМОЖНА и ее следует отлавливать, принимать действия и снова в бой.
А именно она возникает когда iconv не может перекодировать какой-либо символ.
win -> utf-8 по определению пройдет без проблем.
utf-8 -> win ну уж как повезет. я в UTF могу таких символов наворочать или вместе с китайским написать. и? как прекажите iconv'у реагировать на это?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.076 секунд. Запросов: 23.