Python字符编码有关问题:从数据库读php序列化存入数据中的值,字符长度计算不正确

Python字符编码问题:从数据库读php序列化存入数据中的值,字符长度计算不正确
php存入值如下:

a:3:{s:12:"物化性质";a:13:{s:6:"外观";s:72:"无色,具有刺激性和窒息性的气体,商品为其水溶液。";            ..................................省略N多字符,csdn禁止提交了

分析上面一小段:

a:3:{s:12:"物化性质";a:13:{s:6:"外观";

存入的时候,物化性质被计算为12个长度,但python读出这段文字时,物化性质被计算为4个长度,导致在python中的处理逻辑不正确。(我使用phpserialize模块处理,这个模块反序列化的时候,无法准确的按照序列化中的长度读取数据。)

请各位大牛帮忙解决。
------解决方案--------------------
先编码成 utf-8 试试

Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> s = "物化性质"
>>> s.decode('gb18030')
u'\u7269\u5316\u6027\u8d28'
>>> s.decode('gb18030').encode('utf-8')
'\xe7\x89\xa9\xe5\x8c\x96\xe6\x80\xa7\xe8\xb4\xa8'
>>>
 
------解决方案--------------------
将字符串进行编码
------解决方案--------------------
php或数据库是按字节
python是按字符
------解决方案--------------------
需要codecs.lookup("utf-8").encode(cb_props),那表示从数据库取出数据已经被自动解码成unicode字串。序列化数据在数据库里最好定义成blob二进制类型避免自动转换...