Unicode(UTF-8)可以';不能正确显示吗?(Python)
我在Pyton中有以下代码:Unicode(UTF-8)可以';不能正确显示吗?(Python),python,macos,python-3.x,unicode,python-unicode,Python,Macos,Python 3.x,Unicode,Python Unicode,我在Pyton中有以下代码: # myFile.csv tend to looks like: # 'a1', 'ふじさん', 'c1' # 'a2', 'ふじさん', 'c2' # 'a3', 'ふじさん', 'c3' s = u"unicodeText" # unicodeText like, ふじさん بعدة أش 일본富士山Ölkələr with codecs.open('myFile.csv', 'w+', 'utf-8') as f: # codecs
# myFile.csv tend to looks like:
# 'a1', 'ふじさん', 'c1'
# 'a2', 'ふじさん', 'c2'
# 'a3', 'ふじさん', 'c3'
s = u"unicodeText" # unicodeText like, ふじさん بعدة أش 일본富士山Ölkələr
with codecs.open('myFile.csv', 'w+', 'utf-8') as f: # codecs open
f.write(s.encode('utf-8', 'ignore'))
将
打开
更改为编解码器。打开
感谢您指出f.close(),已删除。codecs.open打开一个包装好的读写器,它将为您进行编码/解码。因此,您无需对字符串进行编码即可进行写入。您需要在open调用中传递'ignore'参数
with open('myFile.csv', 'w+', 'utf-8', 'ignore') as f:
f.write(s)
请注意,在使用with语句时,不需要调用close
最初的答案是:
open的第三个参数是需要整数的缓冲。
您应该按如下方式写入并传递编码:
with open('myFile.xls', 'w+', encoding='utf-8') as f:
请注意,您是以文本模式打开文件的。无需对字符串进行编码即可写入
另外,您的文件模式“w+”有点奇怪。我不确定,但我想它会截断你的文件。如果要附加到文件,应使用“a”作为模式。codecs.open打开一个包装的读写器,该读写器将为您进行编码/解码。因此,您无需对字符串进行编码即可进行写入。您需要在open调用中传递'ignore'参数
with open('myFile.csv', 'w+', 'utf-8', 'ignore') as f:
f.write(s)
请注意,在使用with语句时,不需要调用close
最初的答案是:
open的第三个参数是需要整数的缓冲。
您应该按如下方式写入并传递编码:
with open('myFile.xls', 'w+', encoding='utf-8') as f:
请注意,您是以文本模式打开文件的。无需对字符串进行编码即可写入
另外,您的文件模式“w+”有点奇怪。我不确定,但我想它会截断你的文件。如果要附加到文件,应使用“a”作为模式。codecs.open打开一个包装的读写器,该读写器将为您进行编码/解码。因此,您无需对字符串进行编码即可进行写入。您需要在open调用中传递'ignore'参数
with open('myFile.csv', 'w+', 'utf-8', 'ignore') as f:
f.write(s)
请注意,在使用with语句时,不需要调用close
最初的答案是:
open的第三个参数是需要整数的缓冲。
您应该按如下方式写入并传递编码:
with open('myFile.xls', 'w+', encoding='utf-8') as f:
请注意,您是以文本模式打开文件的。无需对字符串进行编码即可写入
另外,您的文件模式“w+”有点奇怪。我不确定,但我想它会截断你的文件。如果要附加到文件,应使用“a”作为模式。codecs.open打开一个包装的读写器,该读写器将为您进行编码/解码。因此,您无需对字符串进行编码即可进行写入。您需要在open调用中传递'ignore'参数
with open('myFile.csv', 'w+', 'utf-8', 'ignore') as f:
f.write(s)
请注意,在使用with语句时,不需要调用close
最初的答案是:
open的第三个参数是需要整数的缓冲。
您应该按如下方式写入并传递编码:
with open('myFile.xls', 'w+', encoding='utf-8') as f:
请注意,您是以文本模式打开文件的。无需对字符串进行编码即可写入
另外,您的文件模式“w+”有点奇怪。我不确定,但我想它会截断你的文件。如果要附加到文件,则应使用“a”作为模式。您似乎试图以文本模式打开文件(因为您指定了编码),但随后尝试写入二进制数据(因为您在将文本写入文件之前对其进行了编码)。您需要以二进制形式打开文件并写入编码文本,或者以文本形式打开文件并写入文本
此外,将其作为文本打开的尝试甚至不起作用,因为您正在传递utf-8
作为缓冲参数,而不是编码
参数。见`
但即使你做得正确,这仍然不能真正帮助你处理Excel文件,因为这些文件有一个复杂的二进制结构。我建议您使用类似的方法来读取和写入xls文件
下面是一个适用于.csv的简单示例:
with open('file.csv', 'w', encoding='utf-8') as fh:
fh.write('This >µ< is a unicode GREEK LETTER MU\n')
打开('file.csv','w',encoding='utf-8')作为fh的:
fh.write('This>µ<是unicode希腊字母MU\n')
或者
with open('file.csv', 'wb') as fh:
fh.write('This >µ< is a unicode GREEK LETTER MU\n'.encode('utf-8'))
打开('file.csv',wb')作为fh的:
fh.write('This>µ<是unicode希腊字母MU\n'.encode('utf-8'))
您似乎试图以文本模式打开文件(因为您指定了编码),但随后尝试写入二进制数据(因为您在将文本写入文件之前对其进行了编码)。您需要以二进制形式打开文件并写入编码文本,或者以文本形式打开文件并写入文本
此外,将其作为文本打开的尝试甚至不起作用,因为您正在传递utf-8
作为缓冲参数,而不是编码
参数。见`
但即使你做得正确,这仍然不能真正帮助你处理Excel文件,因为这些文件有一个复杂的二进制结构。我建议您使用类似的方法来读取和写入xls文件
下面是一个适用于.csv的简单示例:
with open('file.csv', 'w', encoding='utf-8') as fh:
fh.write('This >µ< is a unicode GREEK LETTER MU\n')
打开('file.csv','w',encoding='utf-8')作为fh的:
fh.write('This>µ<是unicode希腊字母MU\n')
或者
with open('file.csv', 'wb') as fh:
fh.write('This >µ< is a unicode GREEK LETTER MU\n'.encode('utf-8'))
打开('file.csv',wb')作为fh的:
fh.write('This>µ<是unicode希腊字母MU\n'.encode('utf-8'))
您似乎试图以文本模式打开文件(因为您指定了编码),但随后尝试写入二进制数据(因为您在将文本写入文件之前对其进行了编码)。您需要以二进制形式打开文件并写入编码文本,或者以文本形式打开文件并写入文本
此外,将其作为文本打开的尝试甚至不起作用,因为您正在传递utf-8
作为缓冲参数,而不是编码
参数。见`
但是,即使你做得正确,这仍然不能真正帮助你处理Excel文件