Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Смена кодировки UTF-8 на windows-1251 строки со спецсимволами(смайлами)
 
 автор: blackcement   (16.05.2017 в 02:23)   письмо автору
 
 

Здравствуйте, Уважаемые. Честно юзал поиск, но решения не нашел, может и видел решение, но не понял, что это решение мне подходит. Убил уже 6 часов, а решения не нашёл, помогите, люди добрые

Значит так:
Методами Api с чужого сайта получаю текст в кодировке UTF-8 (проверял), парсить в другой кодировке не дают. В тексте содержатся коды смайликов (например 1⃣ или ✅).
Конвертирую так:
mb_convert_encoding($post_text,"windows-1251","UTF-8");

Русскоязычный текст после конвертации отображается правильно, но вот эти "спецсимволы"(смайлики) отображаются как вопросительный знак. Приведённые мною выше символы отобразятся как 1? и ?. Как я понял, тут что-то с мультибитностью кодировки связано. Подскажите как мне при перекодировке сохранить целостность текста включая коды смайлов? Спасибо.

  Ответить  
 
 автор: confirm   (16.05.2017 в 10:48)   письмо автору
 
   для: blackcement   (16.05.2017 в 02:23)
 

Какой смысл конвертировать в СР1251 то, чего нет в ней?
Не поддерживаемое кодировкой и будет отражено как ⃣ или ✅, и это HTML-ENTITIES, а не многобайтные строки, при этом что будет видно зависит и от браузера. Пора забывать о windows-1251 и не страдать головной болью.

  Ответить  
 
 автор: blackcement   (16.05.2017 в 13:12)   письмо автору
 
   для: confirm   (16.05.2017 в 10:48)
 

Как это какой смысл? Сайт у меня на windows-1251, с чужого сервера я получаю русский текст в UTF-8. Чтобы его вывести на моём сайте, мне необходимо его преобразовать в windows-1251, разве нет?
А в кодировке СР1251 нет символа & или символа #? Какую вы рекомендуете использовать кодировку на сайте?

  Ответить  
 
 автор: KPETuH   (16.05.2017 в 13:45)   письмо автору
 
   для: blackcement   (16.05.2017 в 13:12)
 

UTF-8 и использовать

  Ответить  
 
 автор: confirm   (16.05.2017 в 14:10)   письмо автору
 
   для: blackcement   (16.05.2017 в 13:12)
 

Какой смысл? А какой смысл парится с &#xxxx пытаясь конвертировать их, если эти символы не входят в набор 1251? Не хотите UTF использовать, значит довольствуйтесь html-представлением данных символов с надеждой на то, что браузер их отобразит. В СР1251 входят символы и & и #, не в них проблема.

Слишком мало в настоящее время таблицы символов обеспечивающей кодировкой 1251, чтобы делать не нее ставку. Впрочем вам решать, не хотите, партесь и не пытайтесь конвертировать то, чего не существует.

  Ответить  
 
 автор: blackcement   (16.05.2017 в 14:43)   письмо автору
 
   для: confirm   (16.05.2017 в 14:10)
 

Я бы довольствовался, если бы русский текст конвертировался и символы не входящие в кодировку 1251 конвертировались в сущность(в кодировке 1251). Я бы с радостью не пытался конвертировать если бы нашёл другой способ, но у меня есть строка с русскими словами в кодировке UTF-8 вида
случайным образом! Всем удачи!рџЋЃ (это часть строки)
в этой строке есть текст &#xxxx;, но только в кодировке UTF-8. Хочу получить из этой строки типа
Как прекрасен этот мир&#xxxx;, посмотри
А не
Как прекрасен этот мир?, посмотри
Как это сделать?

  Ответить  
 
 автор: confirm   (16.05.2017 в 14:56)   письмо автору
 
   для: blackcement   (16.05.2017 в 14:43)
 

HTML представлениям по барабану какая кодировка, они в любой остаются &#xxxx;.

Никак нельзя конвертировать ее, пробуйте:

<?
echo iconv('utf-8''windows-1251''&#9989;');


И это не смайлик, это символ "выбрано/отмечено". Выведите на страницу под разными браузерами диапазон html-сущностей, поймете.

  Ответить  
 
 автор: blackcement   (16.05.2017 в 15:34)   письмо автору
 
   для: confirm   (16.05.2017 в 14:56)
 

Спасибо, ответ "Никак" меня вполне устроил. Перевожу сайт на кодировку UTF-8.

  Ответить  
 
 автор: KPETuH   (16.05.2017 в 13:45)   письмо автору
 
   для: confirm   (16.05.2017 в 10:48)
 

Не то чтобы пора, скорее мало кто уже помнит про СР1251 ))

  Ответить  
 
 автор: blackcement   (16.05.2017 в 14:25)   письмо автору
 
   для: KPETuH   (16.05.2017 в 13:45)
 

Если я правильно понимаю, то СР1251 и windows-1251 это одно и тоже. Сайт Вконтакте использует кодировку windows-1251, а разработчики там далеко не дураки.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования