如何在python中读写utf_8?

如何在python中读写utf_8?,python,encoding,utf-8,io,Python,Encoding,Utf 8,Io,我的python脚本中有一些非ascii数据。 python可以正确地处理它们,但当我想要保存它们时,它会给出一个错误。所以我用str.encode()对它们进行编码,然后将它们写入一个文件。 对于读取文件和解码数据,我在Python2.7中使用str.decode()-读取文件的数据是字符串-但在Python3.6中没有任何str.decode()函数,我遇到了问题 我甚至在整个python官方文档中都找不到答案 示例代码:忽略案例请此时使用手机进行即时通讯 string="hello=سلا

我的python脚本中有一些非ascii数据。 python可以正确地处理它们,但当我想要保存它们时,它会给出一个错误。所以我用
str.encode()
对它们进行编码,然后将它们写入一个文件。 对于读取文件和解码数据,我在Python2.7中使用
str.decode()
-读取文件的数据是字符串-但在Python3.6中没有任何
str.decode()
函数,我遇到了问题

我甚至在整个python官方文档中都找不到答案

示例代码:忽略案例请此时使用手机进行即时通讯

string="hello=سلام -in persian"
file=open("file.txt",'w+', encoding='utf-8')
file.write(string.encode())
# using file.write(string) raises an error
print(file.read())# if the whole string be in Persian prints sth like b'\xff\xa3....'
file.read().decode()# raises an error contains: str object doesn'have attribute decode
# here was my problem in updating from 2.7 to 3.6

file.close()

`

用于python 3。您应该使用
str.encode()
str
作为
字节写入文件,然后以写入二进制模式
open('filename.txt',wb')
打开文件。读取时,以读取二进制模式读取文件<代码>打开('filename.txt','rb')
并使用
bytes.decode()
将其转换回
str

您可以将其用作参考:

utfchar = '¶'
with open('filename.txt', 'wb') as fp:
    fp.write(utfchar.encode())

# and later:

with open('filename.txt', 'rb') as fp:
    utfchar = fp.read().decode()

assert utfchar == '¶'

对于Python3。您应该使用
str.encode()
str
作为
字节写入文件,然后以写入二进制模式
open('filename.txt',wb')
打开文件。读取时,以读取二进制模式读取文件<代码>打开('filename.txt','rb')
并使用
bytes.decode()
将其转换回
str

您可以将其用作参考:

utfchar = '¶'
with open('filename.txt', 'wb') as fp:
    fp.write(utfchar.encode())

# and later:

with open('filename.txt', 'rb') as fp:
    utfchar = fp.read().decode()

assert utfchar == '¶'

在Python 3中,您只需编写以下字符串:

with open('file.txt', 'w+', encoding='utf-8') as f:
    f.write("hello=שלום in Hebrew")

在Python 3中,您只需编写以下字符串:

with open('file.txt', 'w+', encoding='utf-8') as f:
    f.write("hello=שלום in Hebrew")

如果没有代码可供查看,您的问题很难回答。如果您在打开文件时使用
编码
参数,您的问题很可能会消失。我将更新我的问题谢谢您的回答,但我的方法无法将您的帮助应用到其他方面。如果没有代码,您的问题很难回答。如果在打开文件时使用
编码
参数,您的问题很可能会消失。我将更新我的问题谢谢您的回答,但我的方法无法应用您的帮助,可能是其他方式。好的,这部分没有问题,我在代码的下一部分加载和解码数据时遇到问题,谢谢你的回答。好的,这部分没问题,我在代码的下一部分中遇到了加载和解码数据的问题,谢谢你的回答。