cakephp php序列化:需要类似字节的对象,而不是'str'

2w2cym1i  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(144)

我正在转换一个网站从Cakephp到django,我有问题,使用一个函数unserialize从php。

$details = unserialize(temp);

我将其转换为python作为-〉

from phpserialize import *
details = loads(temp)

我收到此错误
a bytes-like object is required, not 'str'
我的数据主要包含日语字符,看起来像这样-〉

a:15:{
  s:9:"CandidateA";a:9:{
    s:4:"mail";s:21:"somemail@gmail.com";
    s:4:"name";s:22:"name1";
    s:7:"something1";s:19:"something";
    s:6:"mobile";s:13:"12345678";
    s:7:"zipcode";s:8:"123456";
    s:9:"address_1";s:18:"address1";
    s:9:"address_2";s:5:"0987659";
    s:15:"something2";s:9:"something3";
    s:6:"street";s:24:"address2";
  }
   s:6:"CandidateB";a:9:{
    s:4:"mail";s:21:"somemail@gmail.com";
    s:4:"name";s:22:"name1";
    s:7:"something1";s:19:"something";
    s:6:"mobile";s:13:"12345678";
    s:7:"zipcode";s:8:"123456";
    s:9:"address_1";s:18:"address1";
    s:9:"address_2";s:5:"0987659";
    s:15:"something2";s:9:"something3";
    s:6:"street";s:24:"address2";
  }
  ----
  ----
  ----
  ----
  ----

}

----意味着存在更多的重复。
请帮帮忙。

eimct9ow

eimct9ow1#

temp的类型似乎是字符串,这意味着它包含utf-8字符。但你需要一个类似字节的对象。
要将字符串转换为类似字节的对象,需要对其进行编码。

>>> temp='whatever'
>>> print(temp)
whatever
>>> type(temp)
<class 'str'>

>>> btemp = temp.encode('utf-16')
>>> print(btemp)
b'\xff\xfew\x00h\x00a\x00t\x00e\x00v\x00e\x00r\x00'
>>> type(btemp)
<class 'bytes'>

你需要寻找什么样的编码,你将需要为日语字符。

相关问题