PHP строка конвертирует кодировку из utf8 в cp1251 с заменой невозможных символов с помощью html-мнемоники

Я конвертирую строковое кодирование из широкого utf8 к ограниченному кодированию cp1251, Мне нужно сохранить некоторые символы, не включенные в cp1251.

В python 2.x есть специальная функция, которая при преобразовании кодировки заменяет невозможные символы на html-сущности:

# -*- coding: utf-8 -*-

s_in = "Ø 125 mm".decode('utf8')
s_out = s_in.encode('cp1251', 'xmlcharrefreplace')
print s_out # prints Ø 125 mm

Живой пример на Ideone

Есть ли готовый func / lib в PHP для выполнения задачи?

Мой код:

<?php
$in = 'Ø 125 mm';
$out = mb_convert_encoding($in, 'cp1251', 'utf8');
echo $out; // prints ? 125 mm

Живой пример на sandbox.onlinephpfunctions

0

Решение

Используя iconv() функция в PHP Вы можете преобразовать строку из одной в другую закодированную схему. Пример:

$out = iconv("UTF-8", "CP1251//IGNORE", $in);

Если вы добавите строку //IGNORE, символы, которые не могут быть
представленные в целевой кодировке молча отбрасываются

Для полного описания смотрите ссылку:
http://php.net/manual/en/function.iconv.php

0

Другие решения

Пытаться json_encode с JSON_UNESCAPED_UNICODE

$in = 'Ø 125 mm';
$out = json_encode($in, JSON_UNESCAPED_UNICODE);
echo json_decode($out, true);

http://sandbox.onlinephpfunctions.com/code/cfd9f38ed7ad8b668285be31004bfe2578da6436

0

По вопросам рекламы [email protected]