2011-07-12 5 views
0

comment puis-je ajouter un caractère unicode 16 bits à une chaîne en phpphp unicode 16 bits

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

D'après ce que je vois, \ x ne prend des caractères 8 bits aka ascii

+1

En passant simplement le caractère littéral? Fonctionne ici. – Wrikken

+0

Vérifiez [mb_convert_encoding] (http://www.php.net/manual/fr/function.mb-convert-encoding.php) également – lucifurious

+1

Il n'existe pas de caractère Unicode 16 bits. Unicode est 21 bits. – tchrist

Répondre

-1

Essayez:

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

Déjà, ne fonctionne pas du tout et je crois que php ne supporte même pas "\ u". – Drake

0

De the manual:

PHP ne supporte qu'un ensemble de 256 caractères et n'offre donc pas de support Unicode natif.

Vous pourriez entrer une séquence UTF-8 encodée manuellement, je suppose.

Vous pouvez également taper dehors UCS4 comme séquence d'octets et utiliser iconv("UTF-32LE", "UTF-8", $str); pour le convertir en UTF-8 pour un traitement ultérieur. Vous ne pouvez pas entrer le codepoint comme une unité de code 32 bits en une seule fois.

0

Les caractères Unicode n'existent pas directement dans PHP (*), mais vous pouvez traiter des chaînes contenant des octets qui représentent des caractères dans le codage UTF-8. Voici une façon de convertir un point de code de caractère numérique en UTF-8:

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

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

(*: et '16 -bit » caractères Unicode n'existent pas du tout, Unicode a des points de code au-delà U + FFFF. Il y a des 'unités de code' de 16 bits en UTF-16, mais c'est un encodage moche que vous ne rencontrerez probablement pas en PHP.)

0

Parce qu'unicode est juste multi-octets et PHP ne supporte qu'un seul octet, vous pouvez créer des caractères multi-octets avec plusieurs octets simples :)

$test = "testing\x19\x9F";