powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php+excel + символ номера
5 сообщений из 5, страница 1 из 1
php+excel + символ номера
    #39086806
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
файл 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
php+excel + символ номера
    #39086810
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежник,
забыл указать функцию
Код: 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
php+excel + символ номера
    #39087026
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>";
...
Рейтинг: 0 / 0
php+excel + символ номера
    #39087151
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iconv?
...
Рейтинг: 0 / 0
php+excel + символ номера
    #39091668
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php+excel + символ номера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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