我对Python(2.6.2)有一个奇怪的问题,我得出结论是Vista端口中的一个错误(我无法在XP或Linux中复制它)。
我有一个用户列表,加密密码,以及我存储在更大列表中的主机(它作为一种数据库)。
除了单个用户的数据存储方式和存储组的存储方式不一致之外,这一切都很好用。但
由'create_user'方法
创建['localhost','demo','demouserpasswordhash']
由'create_database'方法
创建['\ xff \ xfel \ x00o \ x00c \ x00a \ x00l \ x00h \ x00o \ x00s \ x00t \ x00','\ x00d \ x00e \ x00m \ x00o \ x00','\ x00d \ x00e \ x00m \ x00o \ x00u \ x00s \ x00e \ x00r \ x00p \ X00A \ x00s \ x00s \ x00w \ x00o \ x00r \ x00d \ x00h \ X00A \ x00s \ x00h \ X00 \ r \ X00 \ N']
我不明白为什么它这样做,因为代码的简单程度如下:
# ----- base functions
def create_user ( user_data ):
return user_data.split(":")
def show_user ( user_data ):
print "Host: ", user_data[0]
print "Username: ", user_data[1]
print "Password: ", user_data[2]
print
def create_database ( user_list ):
database = []
for user in user_list:
database.append( create_user( user ) )
return database
def show_database( database ):
for row in database:
show_user( row )
# ----- test area
users = open( "users.txt" )
test_user = create_user( "localhost:demo:demouserpasswordhash" )
db = create_database( users )
print db[0]
print test_user
# -----
任何人都有类似的经历或只是我吗?
答案 0 :(得分:6)
您的文件users.txt是UTF-16,但您将其打开为ASCII。
将其更改为ASCII,或者像这样打开它:
import codecs
users = codecs.open( "users-16.txt", "r", "utf-16" )
答案 1 :(得分:1)
尝试替换
create_user( user )
与
create_user( user.decode("utf16") )