如何解决configparser上的unicode问题

时间:2019-04-01 18:43:12

标签: python-3.x configparser

我使用Python 3.7和 configparser 3.7.4。

我有一个rank.ini:

[example]
placeholder : \U0001F882

我有一个main.py文件:

import configparser
config = configparser.ConfigParser()
config.read('ranks.ini')

print('')
test = '\U0001F882'
print(type(test))
print(test)
test2 = config.get('example', 'placeholder')
print(type(test2))
print(test2)

代码的结果是:


<class 'str'>

<class 'str'>
\U0001F882

为什么var test2不是“”,我该如何解决。

1 个答案:

答案 0 :(得分:0)

我花了一段时间才弄清楚这一点,因为python3认为所有内容都是Unicode解释的here

如果我的理解是正确的,则可以像u'\U0001F882'这样看到原始印刷品,因此它将其转换为字符。

但是,当您使用configparser作为字符串传递变量时,unicode转义字符实际上会丢失,例如'\\U0001F882'

如果您打印test和test2的代表,您会看到这种差异

print(repr(test))
print(repr(test2))

要获得所需的输出,您必须对字符串值进行unicode转义

print(test2.encode('utf8').decode('unicode-escape')  

希望这对您有用。