Python:如何强制输出 iso-8859-1 文件?

标签 python character-encoding

如何在 Python 中强制输出 Latin-1(我猜是 iso-8859-1?)文件?

这是我目前的代码。它有效,但尝试将生成的输出文件导入 Latin-1 MySQL 表会产生 weird encoding errors .

outputFile = file( "textbase.tab", "w" )
for k, v in textData.iteritems():
    complete_line = k + '~~~~~' + v + '~~~~~' + " ENDOFTHELINE"
    outputFile.write(complete_line)
    outputFile.write( "\n" )
outputFile.close()

生成的输出文件似乎保存为“Western (Mac OS Roman)”,但如果我随后将其保存为 Latin-1,我仍然会遇到奇怪的编码问题。我如何确保所使用的字符串和文件本身在生成时都以 Latin-1 编码?

原始字符串(在 textData 字典中)已从 RTF 文件中解析出来 - 我不知道这是否有所不同。

我对 Python 和一般的编码有点陌生,如果这是一个愚蠢的问题,我深表歉意。我已经尝试查看文档,但还没有深入了解。

我正在使用 Python 2.6.1。

最佳答案

只需使用 codecs写入文件的模块:

import codecs
outputFile = codecs.open("textbase.tab", "w", "ISO-8859-1")

当然,你写的字符串必须是Unicode字符串(type unicode),如果是普通的str对象(基本上是只是字节数组)。我猜您也在使用普通的 Python 文件对象读取 RTF 文件,因此您可能还必须将其转换为使用 codecs.open

关于Python:如何强制输出 iso-8859-1 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2191730/

相关文章:

python - 从 gdb.Value 获取地址

python - 使用 os.path 写入带有变量名的输出文件

c# - 如何从 txt 文件中正确读取瑞典语字符

php - SMS 消息的编码

python - 如何制作碰撞 mask ?

python - 在 Pandas 时间序列数据框中删除重复项

python - 为什么我不能在我的 bottlepy 应用程序中共享 pymongo 连接实例

java - 如何使用 Servlet 和 MySQL 正确读取 Java 中的重音字符?

php - UTF8 编码问题 - 有很好的例子

oracle - 如何在 RDS Oracle 数据库上将字符集 (NLS_CHARACTERSET) 和国家字符集 (NLS_NCHAR_CHARACTERSET) 更改为 UTF8?