Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/65: Рейтинг темы: голосов - 65, средняя оценка - 4.51
2 / 2 / 0
Регистрация: 21.02.2013
Сообщений: 45

Phpexcel - русский текст отображается некорректно

22.07.2014, 21:53. Показов 13872. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Пишу от безысходности я перечитал кучу форумов, и постов про приминение phpexcel и с функционалом проблем нет.
Но есть избитая тема с кодировкой, пробывал кучу методов. Сам код в UTF-8 сайт отображается в UTF-8 на самом сайте русские буквы отображаются корректно. на странице есть поля в которые нужно ввести русскими буквами текст после чего он обрабатывается php скриптом, скрипт до безобразия простой

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
require_once('../Classes/PHPExcel.php');
 
require_once('../Classes/PHPExcel/IOFactory.php');
 
require_once('../Classes/PHPExcel/Writer/Excel5.php');
 
$order_array = array (
                1 => "A15", 2 => "D15", 3 =>"G15", 4=>"J15", 5=>"M15", 6=>"P15", 7=>"S15", 8=>"V15", 9=>"Y15", 10=>"AB15",
                11 =>"AE15", 12=>"AH15", 13=>"AK15", 14=>"AN15", 15=>"AQ15", 16=>"AT15", 17=>"AW15", 18=>"AZ15", 19=>"BC15",
                20=>"BF15", 21=>"BI15", 22=>"BL15", 23=>"BO15", 24=>"BR15", 25=>"BU15", 26=>"BX15", 27 =>"CA15", 28=>"CD15", 29=>"CG15",
                30=>"CJ15", 31=>"CM15", 32=>"CP15", 33=>"CS15", 34=>"CV15", 35=>"CY15", 36=>"DB15",37=>"DE15",38=>"DH15", 39=>"DK15",
                40=>"DN15", 41=>"DQ15", 42=>"DT15", 43=>"DW15", 44=>"DZ15", 45=>"EC15", );
 
if (
        (!empty($_POST['order'])) 
    and
        (!empty($_POST['company_type']))
    and
        (!empty($_POST['company_name']))
    and
        (!empty($_POST['info_company']))
    and
        (!empty($_POST['egrip']))
    and
        (!empty($_POST['ur_adres1']))   
    and
        (!empty($_POST['ur_adres2']))
    and
        (!empty($_POST['option_check']))
    and
        (!empty($_POST['okved']))
    and
        (!empty($_POST['company_type2']))
    )
      {
      echo 'progress<br>';
      $order = $_POST['order'];
//    $order = iconv ('Windows-1251','UTF-8',$order);
//    $order = iconv ('UTF-8','Windows-1251',$order);
      $company_type = $_POST['company_type'];
      $company_name = $_POST['company_name'];
      $info_company = $_POST['info_company'];
      $egrip = $_POST['egrip'];
      $ur_adres1 = $_POST['ur_adres1'];
      $ur_adres2 = $_POST['ur_adres2'];
      $option_check = $_POST['option_check'];
      $okved = $_POST['okved'];
      $company_type2 = $_POST['company_type2'];
      $company_type2 = iconv ('Windows-1251','UTF-8',$company_type2);
    
      }
     else
        {
        echo 'POST-ERROR' ; 
        }
//--------------------Create xls file---------------------------------------------------->    
$book = PHPExcel_IOFactory::load("testDoc.xls");
 
if (strlen($order) <=100)
    {
    for ($i = 1 ; $i <=45 ; $i++)
        {
    $book->getActiveSheet()->setCellValue($order_array[$i],$order[$i-1]);    
    $objWriter = PHPExcel_IOFactory::createWriter($book, 'Excel5');
        }
    }
else echo 'some think wrong!!!!' .strlen($order).'<br>';     
 
$objWriter->save('new_read.xls');

Как видно из кода я в порядке бреда пробывал преобразовывать кодировки и так и сяк...в итоге в файле в колонках пусто.
Если писать английскими буквами или цифрами все четко работает...


Прошу помочь, кто сталкивался? что еще попробывать? нужно реализовать простой функционал но все встало в этой кодировке. Если я где то ошибся покажите! тоже буду благодарен...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.07.2014, 21:53
Ответы с готовыми решениями:

Русский перевод документации по PHPExcel
Мой несколько вольный перевод документа &quot;PHPExcel developer documentation&quot;. Все места, где я не был уверен, как правильно перевести, я...

Не отображается автор и некорректно отображается дата в слайдбаре
Подскажите из-за чего в слайдах отображаются не те даты, что в обычном новостном блоке. То есть, выводятся даты на подобии: 01-01-70. ...

После конвертирования otf в ttf некорректно отображается текст
После конвертирования otf в ttf некорректно отображается текст генерированный скриптом. Вместо текста квадраты. Что посоветуете?

12
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
23.07.2014, 03:09
Попробуй так:
PHP
1
$order = utf8_encode($order);
2
Модератор
Эксперт 1С
 Аватар для Yulunga
4136 / 943 / 265
Регистрация: 22.04.2013
Сообщений: 6,574
Записей в блоге: 1
23.07.2014, 09:50
спасибо стоит значит помогло ?
я использовал функцию mb_convert_encoding, когда iconv не помогло. и заработало.
0
2 / 2 / 0
Регистрация: 21.02.2013
Сообщений: 45
23.07.2014, 13:09  [ТС]
На самом деле я ещё не пробовал. С др. Стороны я первый раз сталкиваюсь с подобной проблемой. Так же есть вопрос, может и не сюда но в коде можно увидеть функцию strlen которая по какой то причине возвращает не верный результат. Т.е. если я переменной присваиваются строку из английских букв то возвращаемое значение равно фактическому количеству символов.если же я присваиваются русские буквы результат отличается. Я подозревают что это как то тоже связана с кодировкой, а вернее с объёмам памяти занимаемой символами....
Надеясь понятна моя ересть )))
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4136 / 943 / 265
Регистрация: 22.04.2013
Сообщений: 6,574
Записей в блоге: 1
23.07.2014, 13:14
PHP
1
echo mb_strlen($word, 'UTF-8');
просто стрлен вроде как считает количество собсно байт, а тут оно основывается на том, скока байт в одной букве в твоей кодировке указанной
0
2 / 2 / 0
Регистрация: 21.02.2013
Сообщений: 45
23.07.2014, 13:39  [ТС]
Да именно это я и имел ввиду. Отсюда вопрос как считать количество русских букв?

Поясню сразу с php знаком чуть больше полу года и то в редких случаях код ориентирован на работу с базами...
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4136 / 943 / 265
Регистрация: 22.04.2013
Сообщений: 6,574
Записей в блоге: 1
23.07.2014, 13:45
PHP
1
2
3
4
<?php
    $word = "привет мир";
    echo mb_strlen($word, 'UTF-8');
?>
ответом выводит 10. если считать пробел русской буквой, то вроде сходится.
0
2 / 2 / 0
Регистрация: 21.02.2013
Сообщений: 45
23.07.2014, 20:44  [ТС]
Благодарю...вечерком попробую...

Добавлено через 6 часов 47 минут
Все равно русские буквы вопросами но благодаря твоей функции эти вопросы уже пишуться в файл...уже хорошо )))
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4136 / 943 / 265
Регистрация: 22.04.2013
Сообщений: 6,574
Записей в блоге: 1
23.07.2014, 21:06
надеюсь
PHP
1
<?php header('Content-Type: text/html; charset=UTF-8'); ?>
в самом начале какого-нить файла где-нить прописано.
и на всякий пожарный где-то в .htaccess тоже написано использовать по дефолту утф-8
0
2 / 2 / 0
Регистрация: 21.02.2013
Сообщений: 45
23.07.2014, 21:47  [ТС]
Да я тоже наткнулся на эту статью... в итоге как я вычитал нужно в excel сохранять в кодировке windows-1251....
я перевожу и тоже результата ноль...
Где то я допустил костыль...

Добавлено через 3 минуты
у меня на сайте все ок с utf я через echo mb_detect_encoding($order); вижу что все в utf8...

Добавлено через 58 секунд
В порядке бреда перенесу все на другой хостинг где др вебсервер.. уже допускаю что на этапе конфигурирования мог что-то гдето криво прикрутить...

Добавлено через 15 минут
Нет с хостом все в порядке на других так же работает, чуствую что решение простое но где то в догоняю...
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
23.07.2014, 23:39
А если вот такой костыль?

PHP
1
2
$order = iconv('UTF-8', 'ISO-8859-1', $order); // у вас же исходное в UTF-8?
$order = utf8_encode($order);
Вообще странно, я точно помню что решал эту проблему через utf8_encode..
0
2 / 2 / 0
Регистрация: 21.02.2013
Сообщений: 45
24.07.2014, 07:05  [ТС]
Да такой вариант тоже пробовал...)))

Тут вот что я заметил! Изначально задача стояла так: нужно вводимые данные записать в файл шаблона excel.
Через костыль utf8_decode( как я понял переводом в однобайтовый utf8) после чего появляются крякозябры а не вопросы. Кракозябрами строка отображается на странице сайта,но если записать эту строку в др excel файл не шаблон то все прекрасно пишется. Я начал рыть в св-вах файла и обнаружил что шаблон выгружен через консультант плюс. Из этого я сделал вывод что кодировка в файле как-то модифицирована консультантом...
На данный момент других предположений у меня нет.
Я нарыл ещё пару процедур со стороны которые так же переводят кодировку...но это уже вечером...
0
2 / 2 / 0
Регистрация: 21.02.2013
Сообщений: 45
25.07.2014, 19:56  [ТС]
Вот решение! немного конечно именно для моего случая мне как раз нужно было разложить на символы...

PHP
1
2
3
4
5
6
7
8
9
$str = 'Строка';
$count = mb_strlen($str, 'UTF-8');
$arr = array();
for ($i=0; $i<$count; $i++) {
   $arr[] = mb_substr($str, $i, 1, 'UTF-8');
}
echo '<pre>';
print_r($arr);
echo '</pre>';
спасибо автору вот этой статьи http://xoops.ws/modules/instru... php?id=345
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.07.2014, 19:56
Помогаю со студенческими работами здесь

PHPExcel некорректно работает на сервере
PHPExcel работает на Open Server и некорректно работает на Linux Debian. Создает файл с расширением xlsl, потом его удаляет и снова...

Модуль yj_live_search, русский текст отображается некорректно
Подскажите пожалуйста что ето может быть? Пры изменение надписи в модуле с английского на рускый(делал в коде) то они отображается...

Некорректно отображается русский текст в Mysql и на сайте
Некорректно отображается русский текст в Mysql и на сайте. В базе данных такое На сайте тоже, а текст вписал на русском. Если...

Некорректно отображается русский язык
Ввожу в mysql строку кириллицей, прописываю select *..... все корректно отображается, но когда пытаюсь вывести это из БД, с помощью...

Почему русский язык некорректно отображается?
Помогите, пожалуйста! Почему русский язык некорректно отображается? Ошибка в коде? #include &lt;iostream&gt; #include &lt;locale&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru