作者: Bruce.
日時: 2006/4/24(12:42)
Bruce.です。

#あう、Firefoxがいきなり落ちたのでやり直し。

機械伯爵 writes:

> > それはともかくPythonでいうところのUnicodeエンコーディングは
> > 内部的にはUCS-4かUCS-2(UTF-32とUTF-16と書くべき?)だったような
> > 気がするのですが違いますでしょうか?
> 
>  う〜ん、内部はわかんないですけど、コデック使わずにUTF-16かましたら
> 前にエラーが出た覚えがあるんですけど。
> 
>  UTF-8エンコードだと、基本的に1バイト文字はそのままなんで、そっち
> 使ってると思ったんですけどね。

Python 2.4.2のソースで調べてみました。

unicodeobject.h
> #ifndef PY_UNICODE_TYPE
>
> /* Windows has a usable wchar_t type (unless we're using UCS-4) */
> # if defined(MS_WIN32) && Py_UNICODE_SIZE == 2
> #  define HAVE_USABLE_WCHAR_T
> #  define PY_UNICODE_TYPE wchar_t
> # endif
>
> # if defined(Py_UNICODE_WIDE)
> #  define PY_UNICODE_TYPE Py_UCS4
> # endif
>
> #endif

(略)

> /*
> * Use this typedef when you need to represent a UTF-16 surrogate pair
> * as single unsigned integer.
> */
> # if SIZEOF_INT >= 4 
> typedef unsigned int Py_UCS4; 
> #elif SIZEOF_LONG >= 4
> typedef unsigned long Py_UCS4; 
> #endif
>
> typedef PY_UNICODE_TYPE Py_UNICODE;


なので、UTF-8でないのは確実かと。

いじょ。