Python 从ANSI转换为UTF-8
Python 从ANSI转换为UTF-8,python,r,notepad++,Python,R,Notepad++,我有大约600000个文件是用ANSI编码的,我想把它们转换成UTF-8。我可以在NOTEPAD++中单独执行此操作,但对于600000个文件,我无法执行此操作。我可以在R或Python中执行此操作吗 我找到了此链接,但Python脚本未运行: 为什么不读取文件并将其作为UTF-8写入?您可以在Python中实现这一点 #to support encodings import codecs #read input file with codecs.open(path, 'r', encodin
我有大约600000个文件是用
ANSI
编码的,我想把它们转换成UTF-8
。我可以在NOTEPAD++
中单独执行此操作,但对于600000个文件,我无法执行此操作。我可以在R
或Python
中执行此操作吗
我找到了此链接,但Python
脚本未运行:
为什么不读取文件并将其作为UTF-8写入?您可以在Python中实现这一点
#to support encodings
import codecs
#read input file
with codecs.open(path, 'r', encoding = 'utf8') as file:
lines = file.read()
#write output file
with codecs.open(path, 'w', encoding = 'utf8') as file:
file.write(lines)
我明白这是一个老问题,但最近刚刚解决了一个类似的问题,我想我会分享我的解决方案 我有一个程序正在准备一个文件,我需要将其导入sqlite3数据库,但文本文件总是“ANSI”,sqlite3需要UTF-8 ANSI编码在python中被识别为“mbcs”,因此,我使用的代码是我发现的其他代码:
blockSize = 1048576
with codecs.open("your ANSI source file.txt","r",encoding="mbcs") as sourceFile:
with codecs.open("Your UTF-8 output file.txt","w",encoding="UTF-8") as targetFile:
while True:
contents = sourceFile.read(blockSize)
if not contents:
break
targetFile.write(contents)
下面的链接包含我在研究中发现的编码类型的一些信息
使用“ANSI”表示“Windows-1252”编码?@klauds。它在Notepad++中显示为ANSI。请注意,“lakh”不是来自标准(美国/英国==国际)英语的单词。世界各地的许多人都不知道“lakh”是什么。ANSI不是一种编码。“lakh”是什么?@hd1lakh是一个南亚单词,代表100k。读一个不同的utf-8代码页会不会丢失一些字符?(我曾经认为在编写另一个代码页之前,您必须阅读正确的代码页)?来自Python规范:注意:文件总是以二进制模式打开,即使没有指定二进制模式。这样做是为了避免由于使用8位值编码而导致的数据丢失。这意味着在读取和写入时不会自动转换“\n”。我必须将读取编码更改为“cp1252”才能使其正常工作。它仍然以UTF-8打开,否则在遇到混合文件时会出现错误:
“UTF-8”编解码器无法解码字节0x92