Как заменить коды UTF-8 в строке PHP реальными символами?

0

Я запускаю команду оболочки openssl из PHP и получаю следующую строку в виде сегмента выходной строки: 'Divisi\xC3\xB3n TeleComunicaciones'. Насколько я понимаю, есть испанские символы, замененные их буквальными кодами UTF-8. Мне нужно заменить коды на их эквиваленты испанского символа. Полученная строка должна выглядеть следующим образом: "División TeleComunicaciones"?

Я пробовал много функций преобразования строк PHP, но ни один не удалось. Я также заметил одно. Когда я определяю переменную как

$var = "Divisi\xC3\xB3n TeleComunicaciones" это правильно отражено ('División TeleComunicaciones')

Но если я беру значение из вывода команды оболочки openssl, он всегда печатается как 'Divisi\xC3\xB3n TeleComunicaciones'.

Может ли кто-нибудь советовать, пожалуйста, имеет ли PHP какие-либо встроенные средства для этой цели?

  • 0
    Хорошо, сэр, обратите внимание, я спрашивал, смотрели ли вы на это ?
  • 0
    Я обновил определение вопроса. Это мой первый вопрос здесь. Пожалуйста, будьте терпимы, и помогите мне привести его в соответствие со стековым потоком. У меня нет опыта с этим
Показать ещё 2 комментария
Теги:
character-encoding
utf

1 ответ

0

Поскольку это одиночная строка с экранированием байта, вы можете преобразовать их, используя регулярное выражение:

echo preg_replace("#(\\\x[0-9A-F]{2})#e", "chr(hexdec('\\1'))", $var);
  • 0
    Большое спасибо, это работает для этого случая и большинства других, включая даже китайский символ! Но не работает для кириллической строки: "\ x04 \ x12 \ x04> \ x047 \ x04 = \ x045 \ x04A \ x045 \ x04 = \ x04A \ x04:". Это должен быть «Вознесенск», но я получаю: «> 7 = 5A5 = A:». У вас есть идеи, почему кириллица здесь исключение?
  • 0
    Кириллица многобайтовая .. Я еще раз посмотрю и выложу как можно скорее ..
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню