对存储为Python中变量的字符串使用u'string'

时间:2018-10-08 09:43:01

标签: python python-2.7 character-encoding

作为Python 2.7的法国用户,我试图在Python控制台中正确打印包含重音的字符串,例如“é”,“è”,“à”等。

我已经知道在字符串的显式值之前使用u的技巧,例如:

server {
    listen 80;
    server_name mydomain.com;
    try_files $uri $uri/ /index.html @proxy;    

    location @proxy {
      proxy_pass http://127.0.0.1:83;
    }
}

可以正确打印最后一个字符。

现在,我的问题是:如何对存储为变量的字符串执行相同的操作?

确实,我知道我可以执行以下操作:

print(u'Université')

但是问题在于mystring = u'Université' print(mystring) 的值一定要传递到SQL查询中(使用mystring),因此我无法负担psycopg2的内部存储u的值。

那我该怎么做 “打印mystring的unicode值”?

1 个答案:

答案 0 :(得分:2)

u标记不是值的一部分,它只是类型指示符。要将字符串转换为Unicode字符串,您需要知道编码。

unicodestring = mystring.decode('utf-8')  # or 'latin-1' or ... whatever

并进行打印,通常(在Python 2中)需要转换回系统在输出文件句柄上接受的任何内容:

print(unicodestring.encode('utf-8'))  # or 'latin-1' or ... whatever

Python 3通过将Unicode字符串和bytes对象分开来澄清(尽管没有直接简化)这种情况。