LINUX.ORG.RU

итерацией по строке

/thread

anonymous
()
	static int m = -1, k = 0; //multibyte state
	static int uc = 0; //unicode char
	
	if( !in )
	{
		m = -1;
		k = 0;
		uc = 0;
		return 0;
	}

	// Get character length
	if(m == -1)
	{
		uc = 0;
		if( in >= 0xF8 )
			return 0;
		else if( in >= 0xF0 )
			uc = in & 0x07, m = 3;
		else if( in >= 0xE0 )
			uc = in & 0x0F, m = 2;
		else if( in >= 0xC0 )
			uc = in & 0x1F, m = 1;
		else if( in <= 0x7F)
			return in; //ascii
		// return 0 if we need more chars to decode one
		k=0;
		return 0;
	}
	// get more chars
	else if( k <= m )
	{
		uc <<= 6;
		uc += in & 0x3F;
		k++;
	}
	if( in > 0xBF || m < 0 )
	{
		m = -1;
		return 0;
	}
        return uc;
mittorn ★★★★★
()

Что такое «символ»?

anonymous
()

Пасиб всем, парни.

normann ★★★
() автор топика

Есть библиотека glib2 - там есть функции для работы с utf-8

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