Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将unicode字符编码为HTML实体,不包括标记_Python_Html_Email_Beautifulsoup_Lxml - Fatal编程技术网

在Python中将unicode字符编码为HTML实体,不包括标记

在Python中将unicode字符编码为HTML实体,不包括标记,python,html,email,beautifulsoup,lxml,Python,Html,Email,Beautifulsoup,Lxml,您可能知道,要使电子邮件在许多客户端中有效,必须对所有unicode字符进行编码。我想在Python脚本中自动进行这种编码 显然,标记需要从转换中排除,否则html将无法工作-这样做确实是一个复杂的部分-为了确保成功,有必要使用像lxml或beautifulsoup这样的解析包 据我所知,这两个包都不支持转换为编号的unicode实体,如漢;(漢) 任何帮助都是非常宝贵的,我一整天都在用头撞这堵墙!我也遇到过类似的问题,但是在原始文本上运行以下表达式就足够了,它只需将十六进制实体转换

您可能知道,要使电子邮件在许多客户端中有效,必须对所有unicode字符进行编码。我想在Python脚本中自动进行这种编码

显然,标记需要从转换中排除,否则html将无法工作-这样做确实是一个复杂的部分-为了确保成功,有必要使用像lxml或beautifulsoup这样的解析包

据我所知,这两个包都不支持转换为编号的unicode实体,如漢;(漢)


任何帮助都是非常宝贵的,我一整天都在用头撞这堵墙!

我也遇到过类似的问题,但是在原始文本上运行以下表达式就足够了,它只需将十六进制实体转换为十进制实体,然后就可以很好地解析它们:

>>> hex_entity_pat = re.compile('&#x([^;]+);')
>>> hex_entity_fix = lambda x: hex_entity_pat.sub(lambda m: '&#%d;' % int(m.group(1), 16), x) # convert hex to dec entities
>>> BeautifulSoup(hex_entity_fix("<b>&#x6F22;</b>"), convertEntities=BeautifulSoup.ALL_ENTITIES)
<b>漢</b>
>>hex_entity_pat=re.compile('&#x([^;]+);)
>>>hex_entity_fix=lambda x:hex_entity_pat.sub(lambda m:'&#%d;'%int(m.group(1),16),x)#将hex转换为dec entities
>>>美化组(十六进制实体修复(漢;“”),convertEntities=BeautifulSoup.ALL#ENTITIES)
漢

我也遇到过类似的问题,但是在原始文本上运行以下表达式就足够了,它只需将十六进制实体转换为十进制实体,然后就可以很好地解析它们:

>>> hex_entity_pat = re.compile('&#x([^;]+);')
>>> hex_entity_fix = lambda x: hex_entity_pat.sub(lambda m: '&#%d;' % int(m.group(1), 16), x) # convert hex to dec entities
>>> BeautifulSoup(hex_entity_fix("<b>&#x6F22;</b>"), convertEntities=BeautifulSoup.ALL_ENTITIES)
<b>漢</b>
>>hex_entity_pat=re.compile('&#x([^;]+);)
>>>hex_entity_fix=lambda x:hex_entity_pat.sub(lambda m:'&#%d;'%int(m.group(1),16),x)#将hex转换为dec entities
>>>美化组(十六进制实体修复(漢;“”),convertEntities=BeautifulSoup.ALL#ENTITIES)
漢

我假设您的电子邮件是HTML格式的,而不是纯文本格式的。我想您正在寻找以下内容:

some_unicode_string.encode('ascii', errors='xmlcharrefreplace')

但也许你可以用其他方法来实现。首先,你如何生成HTML?

我假设你的电子邮件是HTML格式的,而不是纯文本格式的。我想你正在寻找以下内容:

some_unicode_string.encode('ascii', errors='xmlcharrefreplace')

但也许你可以用其他方法来实现。首先,你如何生成HTML?

我不是这些方面的专家,但你可能会在这里找到一些有用的东西:确保在标题中指定UTF-8。我不是这些方面的专家,但你可能会在这里找到一些有用的东西:确保在标题中指定UTF-8。