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

  • Автор темы Автор темы Ajax
  • Дата начала Дата начала

Ajax

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

проблема такая:
пишу заголовок в графике украинскими буквами, все нормально, но буквы "і", "ї", "є" не выводит. вместо них пустые места.
Работаю на php 4.3.6, apache 1.3.29, win 2000 server
 
видимо, там где-то есть функция наподобие win2uni(). Добавь туда соответствующие преобразования для этих букв.
 
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;
}
все равно, никак
 
нет, сам написал

-~{}~ 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;
}
}
ее рихтую, ничего, только цифры хитро выводиться стали:(
 
ну вот тут и подправь.
ваще ничего не трогай в алгоритме, просто наверх добавь три условия с ретурнами.
это самое простое.
коды буковок выясняй сам =)
 
Проблема не в jpgraph а в Win1K
наверно Винда русская вот украинский язык и не поддерживается

Второе: в шрифтах, которые использует jpgraph
 
Alexandre
украинский не выводится именно в графиках, в других страничках, все нормально отображается.
2.шрифт пишу в принципе нормальный (verdana), а он украинские буквы поддерживает
 
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;
	}
 
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
в мануале ничего не сказано что требуются дополнительные библиотеки. что-то я торможу :(
 
SiMM
я так и понял :))) уже нашел :))

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