
On Fri, 1 Jun 2012 16:17:33 +0200 Sebastian Wiesner <lunaryorn@googlemail.com> wrote:
Am 1. Juni 2012 16:01 schrieb Thomas 'PointedEars' Lahn <PointedEars@web.de>:
Bernd Nawothnig wrote:
On 2012-04-21, wb wrote:
Laut sys.maxunicode (= 65535) habe ich wohl auch eine UTF-16 build, was genau das heißen mag...
Das heißt, dass dann nicht jedes Unicodezeichen intern abgespeichert werden kann, also nicht nur nicht dargestellt werden kann.
Wie kommst Du auf dies schmale Brett? Man kann mit *jeder* Unicode- Codierung *jedes* Unicode-Zeichen darstellen. Ob UTF-7, UTF-8, UTF-16 oder UTF-32 ist völlig egal. Die Codierung definiert nur die Länge einer Code- Einheit (und im Fall von UTF-16BE vs. UTF-16LE die Bytereihenfolge), nicht aber die Maximallänge einer Codesequenz und somit auch keinen Maximalwert bezüglich des codierbaren Codepunkts.
UCS 2 kann nur und ausschließlich Zeichen aus der BMP kodieren. Code-Points außerhalb der BMP lassen sich in UCS 2 nicht darstellen. Mithin kann auch ein UCS-2-Build von CPython nur und ausschließlich Zeichen aus der BMP in Zeichenketten verarbeiten.
Zu beachten ist dass ab Python 3.3 diese ganze Unterscheidung wegfällt weil PEP 393 einige Veränderungen mit sich bringt. So wie früher unter Windows Python üblicherweise ein UCS-2 Build war verhält es sich nun wie ein UCS-4 Build (wie es in den meisten Linux-Distributionen schon seit langem üblich ist). Siehe What's New In Python 3.3[1]. grüße, Marek [1] <http://docs.python.org/dev/whatsnew/3.3.html>