преобразование юникода в обычные символы перед отображением на веб-странице - PullRequest
0 голосов
/ 08 января 2011

Я использую класс openinviter для импорта контактов из электронной почты. Однако вместо обычных символов отображаются Unicodes неанглийских символов (например, польский), таких как u0117 (и аналогичный тип других кодов). В любом случае я могу преобразовать юникоды в символы и затем отобразить их?

Вот оригинальный код страницы: http://pastebin.com/d0tkpxbv

Спасибо.

Ответы [ 3 ]

0 голосов
/ 08 января 2011

Используйте preg_replace () для преобразования значения в его шестнадцатеричный числовой объект:

<?php
$text = 'Wladisu0142aw';
$text = preg_replace('/u([0-9a-f]{4})/i', '&#x$1;', $text);
echo $text;  //displays Wladisław
?>
0 голосов
/ 15 июля 2014

Следующий код позволяет декодировать символы, а также перекодировать их при необходимости.

Код :

if (!function_exists('codepoint_encode')) {

    function codepoint_encode($str) {
        return substr(json_encode($str), 1, -1);
    }

}

if (!function_exists('codepoint_decode')) {

    function codepoint_decode($str) {
        return json_decode(sprintf('"%s"', $str));
    }

}

Как использовать:

header('Content-Type: text/html; charset=utf-8'); 

var_dump(codepoint_encode('ඔන්ලි'));
var_dump(codepoint_encode('සින්ග්ලිෂ්'));

var_dump(codepoint_decode('\u0d94\u0db1\u0dca\u0dbd\u0dd2'));
var_dump(codepoint_decode('\u0dc3\u0dd2\u0db1\u0dca\u0d9c\u0dca\u0dbd\u0dd2\u0dc2\u0dca'));

Вывод :

string(30) "\u0d94\u0db1\u0dca\u0dbd\u0dd2"
string(60) "\u0dc3\u0dd2\u0db1\u0dca\u0d9c\u0dca\u0dbd\u0dd2\u0dc2\u0dca"
string(15) "ඔන්ලි"
string(30) "සින්ග්ලිෂ්"

Если вам нужна более сложная функциональность, см. Как получить символ из кодовой точки Unicodeв PHP? .

0 голосов
/ 08 января 2011

попробуйте это: http://php.net/manual/en/function.chr.php

...