jpgraph и украинский язык

Ajax

Guest
jpgraph и украинский язык

проблема такая:
пишу заголовок в графике украинскими буквами, все нормально, но буквы "і", "ї", "є" не выводит. вместо них пустые места.
Работаю на php 4.3.6, apache 1.3.29, win 2000 server
 

fixxxer

К.О.
Партнер клуба
видимо, там где-то есть функция наподобие win2uni(). Добавь туда соответствующие преобразования для этих букв.
 

Ajax

Guest
2 fixxxer:
вроде бы так?
function win2uni($s)
{
$s = convert_cyr_string($s,'w','i'); // ïðåîáðàçîâàíèå win1251 -> iso8859-5
// ïðåîáðàçîâàíèå iso8859-5 -> unicode:
for ($result='', $i=0; $i<strlen($s); $i++) {
$charcode = ord($s[$i]);
$result .= ($charcode=175)?"&#".(1040+($charcode-176)).";":$s[$i];
$result .= ($charcode=179)?"&#".(1040+($charcode-179)).";":$s[$i];
$result .= ($charcode=186)?"&#".(1040+($charcode-186)).";":$s[$i];
}
return $result;
}
все равно, никак
 

Ajax

Guest
нет, сам написал

-~{}~ 08.09.04 15:14:

нашел в jpgraph такую функцию
// Translate iso encoding to unicode
function iso2uni ($isoline){
for ($i=0; $i < strlen($isoline); $i++){
$thischar=substr($isoline,$i,1);
$charcode=ord($thischar);
$uniline.=($charcode>175) ? "&#" . (1040+($charcode-176)). ";" : $thischar;
}
return $uniline;
}
}
ее рихтую, ничего, только цифры хитро выводиться стали:(
 

fixxxer

К.О.
Партнер клуба
ну вот тут и подправь.
ваще ничего не трогай в алгоритме, просто наверх добавь три условия с ретурнами.
это самое простое.
коды буковок выясняй сам =)
 

Alexandre

PHPПенсионер
Проблема не в jpgraph а в Win1K
наверно Винда русская вот украинский язык и не поддерживается

Второе: в шрифтах, которые использует jpgraph
 

Ajax

Guest
Alexandre
украинский не выводится именно в графиках, в других страничках, все нормально отображается.
2.шрифт пишу в принципе нормальный (verdana), а он украинские буквы поддерживает
 

hayk

Новичок
Ajax
Проблема в ф-ции convert_cyr_string() (convert_cyr_string('ї', 'w', 'i') возвращает пробел - это баг?) и самом jpgraph (зачем ее юзать?).
Все решается заменой в файле jpgraph.php строк
PHP:
	if( LANGUAGE_CYRILLIC ) {
	    if( CYRILLIC_FROM_WINDOWS ) {
		$aTxt = convert_cyr_string($aTxt, "w", "k"); 
	    }
	    $isostring = convert_cyr_string($aTxt, "k", "i");
	    $unistring = LanguageConv::iso2uni($isostring);
	    return $unistring;
	}
на
PHP:
	if( LANGUAGE_CYRILLIC ) {
	    if( CYRILLIC_FROM_WINDOWS ) {
			$unistring = mb_convert_encoding($aTxt, 'UTF-8', 'CP1251');
	    } else {
	    	$unistring = mb_convert_encoding($aTxt, 'UTF-8', 'KOI8-R');
	    }
	    return $unistring;
	}
или на
PHP:
	if( LANGUAGE_CYRILLIC ) {
	    if( CYRILLIC_FROM_WINDOWS ) {
			$unistring = iconv('CP1251', 'UTF-8', $aTxt);
	    } else {
	    	$unistring = iconv('KOI8-RU', 'UTF-8', $aTxt);
	    }
	    return $unistring;
	}
 

Ajax

Guest
hayk
спасибо огромное за помощь, но для проверки пишу такую строку в графике
$graph->title->Set(mb_convert_encoding('і.ї.є', 'UTF-8', 'CP1251'));
чисто для проверки. и вот что я вижу
Fatal error: Call to undefined function: mb_convert_encoding() in e:\apache\htdocs\graph1.php on line 36
в мануале ничего не сказано что требуются дополнительные библиотеки. что-то я торможу :(
 

Ajax

Guest
SiMM
я так и понял :))) уже нашел :))

hayk
все получилось. пасиба.
 
Сверху