Non latin characters in Header/Footer

Topics: Developer Forum, User Forum
Mar 12, 2008 at 8:25 AM
I have a problem!
Non latin characters(russian chars) is displayed incorrect during inserting in Header/Footer WorkSheet.
Useing iconv('cp125' , 'utf-8', $str) does not work.
Please help me!
I am sorry for bad English!
Coordinator
Mar 12, 2008 at 7:48 PM
Can you try utf8_encode function?
Mar 13, 2008 at 11:56 AM
i have changed it to:

$objPHPExcel->getActiveSheet()->getFooterHeader()->setOddHeader('&R'.utf8_encode('RUSSIAN TEXT'));
or
$objPHPExcel->getActiveSheet()->getFooterHeader()->setOddHeader('&R'.utf8_encode(iconv('cp1251','iso-8859-1','RUSSIAN TEXT')));

But this doesn't work
Coordinator
Mar 17, 2008 at 10:31 AM
Does anyone on this forum have experience wth this?
Mar 18, 2008 at 11:25 AM
Edited Mar 18, 2008 at 11:26 AM

maartenba wrote:
Does anyone on this forum have experience wth this?


I tried to add header and experienced the same problem. And looks like the text shouldn't be in utf-8. Because the script produces header-string with two times more characters then it should. It just interprets every byte of utf-8 string as separate character.

Some words in russian for perecd about this problem:

Если добавть в колонтитул текст "Проверка", используя кодировку cp1251, то в результате получим "Ïðîâåðêà". Это уже несколько лучше, чем если добавлять текст в utf-8. Хотя бы потому, что количество символов правильное, просто отображаются они неправильно. А в юникоде каждый из двух байтов, выделяемых на символ, интерпретируется скриптом как код отдельного символа, поэтому если добавить в колонтитул "Проверка" в кодировке utf-8, то количество отображаемых символов будет в два раза больше, чем надо.

"Мусор", который получается в результате использования кодировки cp1251, мне знаком. Встречался с таким же эффектом, когда копировал русский текст из некоторых программ, написанных на Delphi, при включенной английской раскладке клавиатуры. Копирование этого же текста после переключения раскладки на русскую исправляло проблему. С чем это связано, я ещё не разбирался.
Mar 18, 2008 at 11:50 AM

maartenba wrote:
Does anyone on this forum have experience wth this?


Tried to use Excel2007 writer instead of Excel5 writer. Works fine with utf-8.
Apr 22, 2009 at 4:50 AM
Hi!
I dont know, is this question in actual state or not, but a have the same problem with russian chars.
Im using this function: $objPHPExcel->getActiveSheet()->setCellValue('A1', iconv("windows-1251", "UTF-8", $flow_name));
and all work fine. The command syntax iconv('cp125' , 'utf-8', $str) is incorrect.
Apr 22, 2009 at 6:57 AM
I use  $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader($this->mb_conv('some russian chars'));
where function mb_conv($text) {return (mb_convert_encoding($text, 'UTF8', 'CP1251'));}

And results are OK both for Excel2007 and Excel5.

Aug 17, 2012 at 10:26 AM

Maybe this is late answer, but I had a same problem...

My solution was like this:

$value = $cell->getValue();

$value = iconv("utf-8", "windows-1251", $value);

echo $value;

And this $value correctly shows in browser with Cyrillic encoding .