Utf8 ascii-unicode示例[Python]

2024-05-15 10:26:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解UTF-8、ASCII和Unicode之间的区别。我已经读过Unicode, UTF, ASCII, ANSI format differences。 但是我从Python那里得到了一些错误,我不知道如何才能知道字符串的格式。在

例如:

1# 'Klaus-Groth-Straße, Ballahausen'
2# 'Capit\xe1n\n'
3# u'Capit\xe1n\n'

我猜想

  • 因为u',3}=Unicode?在
  • 1#=?在
  • 2#=?在

我已经尝试将string#1写入一个文件,并为自己编写了一个小函数

^{pr2}$

在我将字符串写入txt文件之前,我想替换这些字母以使文本文件中的拼写正确(Klaus Groth Straße,Buchholz in der Nordheide)。在

但它不起作用:/

你能告诉我我的3个例子属于哪种类型的字符串-Unicode或ASCII或UTF-8?我如何使用像1这样的字符串来正确拼写txt?在


Tags: 文件字符串txtformatasciiunicodeutfansi
2条回答

我自己也遇到了一个类似的问题,我现在已经解决了。 我使用Delphi9,问题是从文件中读取UTF8,然后再写回去。 长话短说,各种口音和/或坟墓或类似的东西在写信时就消失了。 编码或解码UTF8的工具似乎不能完全完成任务,或者Delphi本身在后台做一些隐藏的工作。在

我最后写了我自己的UTF8解码器和编码器,现在一切都完美地工作。 UTF8方案实际上相当简单。一点点位移动和加法,你就在解码和编码上了。 我用的是:“http://tools.ietf.org/html/rfc3629” 作为我工作的参考。在

至少它给了你一个完美的解释UTF8标准。在

您是对的,示例3是一个Unicode字符串,因为前面的u。这可能是最容易处理的。在

#1和#2都是字节字符串。#1完全由ASCII字符组成,因此您不会从中得到任何Unicode错误;但是它包含一个HTML实体,您可能希望将其转换为字符。转换HTML实体有多种策略,请参阅问题Decoding HTML entities with Python。结果应该是Unicode字符串。在

#2包含的字符不是ASCII,但也不是Unicode。如果是UTF-8字符串,那么至少有2个十六进制字节,但只有一个。这意味着它是其他字符编码的一部分,需要在使用它之前对其进行解码。Windows1252代码页可能是一个很好的猜测。在

>>> 'Capit\xe1n\n'.decode('cp1252')
u'Capit\xe1n\n'
>>> print 'Capit\xe1n\n'.decode('cp1252')
Capitán

当您写回一个文件时,您需要将Unicode字符串转换回字节字符串。使用字符串上的encode方法执行此操作。你需要决定你的文件是什么编码。在

^{pr2}$

或者

f.write(u'Capit\xe1n\n'.encode('cp1252')

相关问题 更多 >