PHP Unicode 16 бит - PullRequest
       3

PHP Unicode 16 бит

0 голосов
/ 13 июля 2011

как я могу добавить 16-битный юникод-символ в строку в php

$test = "testing" . (U + 199F);

Из того, что я вижу, \ x принимает только 8-битные символы aka ascii

Ответы [ 4 ]

0 голосов
/ 14 июля 2011

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

$test = "testing\x19\x9F";
0 голосов
/ 13 июля 2011

С руководство :

PHP поддерживает только набор из 256 символов и, следовательно, не предлагает встроенную поддержку Unicode.

Вы можете ввести кодированную вручную последовательность UTF-8, я полагаю.

Вы также можете набрать UCS4 как последовательность байтов и использовать iconv("UTF-32LE", "UTF-8", $str); для преобразования ее в UTF-8 для дальнейшей обработки.Вы просто не можете ввести код в виде 32-битного кода за один раз.

0 голосов
/ 14 июля 2011

Unicode-символы не существуют напрямую в PHP (*), но вы можете работать со строками, содержащими байты, представляющие символы в кодировке UTF-8. Вот один из способов преобразования числовой кодовой точки в UTF-8:

function unichr($i) {
    return iconv('UCS-4LE', 'UTF-8', pack('V', $i));
}

$test= 'testing'.unichr(0x199F);

(*: и «16-битные» символы Unicode вообще не существуют; у Unicode есть кодовые точки, намного превосходящие U + FFFF. В UTF-16 есть 16-битные «кодовые единицы», но это уродливая кодировка вы вряд ли встретите в PHP.)

0 голосов
/ 13 июля 2011

Попробуйте:

$test = "testing" . "\u199F";
...