Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php+excel + символ номера / 5 сообщений из 5, страница 1 из 1
26.10.2015, 13:42
    #39086806
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php+excel + символ номера
файл utf-8 без bom
Код: php
1.
2.
3.
4.
5.
header("Content-Type: text/html; charset=UTF-8"); 
...

$Eresurs=cp1251_to_utf8($excel->Worksheets(1)->Cells($i,11)->value);
echo "$Eresurs<br>"; 


выводит на экран

Арасан �2 (вопрос в черном ромбе)

а должно выходить Арасан №2

не принимает именно символ №
...
Рейтинг: 0 / 0
26.10.2015, 13:45
    #39086810
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php+excel + символ номера
Картежник,
забыл указать функцию
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function cp1251_to_utf8($s){
          $c209 = chr(209); $c208 = chr(208); $c129 = chr(129);
		  $t="";
          for($i=0; $i<strlen($s); $i++)    {
              $c=ord($s[$i]);
              if ($c>=192 and $c<=239) $t.=$c208.chr($c-48);
              elseif ($c>239) $t.=$c209.chr($c-112);
              elseif ($c==184) $t.=$c209.$c209;
              elseif ($c==168)    $t.=$c208.$c129;
              else $t.=$s[$i];
          }
          return $t;
      }
...
Рейтинг: 0 / 0
26.10.2015, 15:42
    #39087026
anvano
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php+excel + символ номера
Потому, что ваши самописные костыли не учитывают, что знак номера в UTF-8 занимает ТРИ байта, а не два

http://www.fileformat.info/info/unicode/char/2116/index.htm

Зачем изобретать велосипед, если все уже изобретено и работает корректно?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php

header("Content-Type: text/html; charset=UTF-8"); 

$var = chr(185); # Код символа № в кодировке CP1251
echo "Code in CP1251 = ".strtoupper(bin2hex($var))." (len=".strlen($var).")<br>";

$var = mb_convert_encoding($var, 'UTF-8','CP1251');
echo "Code in UTF-8 = ".strtoupper(bin2hex($var))." (len=".strlen($var).")<br>";
...
Рейтинг: 0 / 0
26.10.2015, 16:44
    #39087151
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php+excel + символ номера
iconv?
...
Рейтинг: 0 / 0
31.10.2015, 11:15
    #39091668
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php+excel + символ номера
anvanoПотому, что ваши самописные костыли не учитывают, что знак номера в UTF-8 занимает ТРИ байта, а не два

http://www.fileformat.info/info/unicode/char/2116/index.htm

Зачем изобретать велосипед, если все уже изобретено и работает корректно?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php

header("Content-Type: text/html; charset=UTF-8"); 

$var = chr(185); # Код символа № в кодировке CP1251
echo "Code in CP1251 = ".strtoupper(bin2hex($var))." (len=".strlen($var).")<br>";

$var = mb_convert_encoding($var, 'UTF-8','CP1251');
echo "Code in UTF-8 = ".strtoupper(bin2hex($var))." (len=".strlen($var).")<br>";


mb_convert_encoding делает так как надо
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php+excel + символ номера / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]