2010-11-26 3 views

Antwort

2

Es ist nicht sofort klar, was Sie meinen, wenn Sie sagen „bis O“. Wenn Sie fragen, wie Sie es in eine andere Kodierung konvertieren können, dann ist ein allgemeiner Ansatz, die iconv Funktion zu verwenden. 014D ist die UCS-2 (Unicode) für Ihre gewünschte Funktion so, wenn Sie eine Zeichenfolge haben, welche die Bytes 014D Sie

iconv('UCS-2', 'UTF-8', $s) 

nutzen könnten von UCS-2 auf UTF-8 zu konvertieren. Ähnlich, wenn Sie in eine andere Kodierung konvertieren möchten - obwohl Sie wissen müssen, dass nicht alle Kodierungen das von Ihnen verwendete Zeichen enthalten. Aus der iconv-Dokumentation wird ersichtlich, dass die // TRANSLIT-Option in diesem Fall hilfreich sein kann.

Beachten Sie, dass iconv eine Byte-Sequenz verwendet, wenn Sie also tatsächlich eine Zeichenfolge mit einem Schrägstrich, dann eine u, dann eine 0 etc ... haben, müssen Sie diese zuerst in die Byte-Sequenz konvertieren.

+0

@borrible - scheint nicht korrekt, möchten Sie erneut testen? – ajreal

+0

@ajreal - stellen Sie sicher, dass Sie auf einer UCS-2-Byte-Sequenz testen. – borrible

+0

@borrible - ich versuche den Code, den Sie gepostet haben, scheint nicht zu funktionieren, wenn die $ s = '\ u014D'; ', es in ungültige chinesische Zeichen konvertiert – ajreal

1

Wenn Sie die Escape-Zeichen in der Zeichenfolge haben, können Sie eine unordentliche Exec-Anweisung verwenden.

$string = '\\u014D'; 
exec("\$string = '$string'"); 

Auf diese Weise sollte die Unicode-Escape-Sequenz erkannt und als Unicode-Zeichen interpretiert werden, wenn die Zeichenfolge analysiert wird.

Natürlich sollten Sie exec nie verwenden, außer absolut erforderlich.