将Unicode对象与非ASCII符号转换为字符串对象(在Python中)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了将Unicode对象与非ASCII符号转换为字符串对象(在Python中),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2181字,纯文字阅读大概需要4分钟。
内容图文
![将Unicode对象与非ASCII符号转换为字符串对象(在Python中)](/upload/InfoBanner/zyjiaocheng/807/092980d84e16426294a5ce017d42395c.jpg)
我想通过在线服务发送中文字符,并返回生成的英文字符串.我正在使用简单的JSON和urllib.
是的,我在宣布.
# -*- coding: utf-8 -*-
在我的代码之上.
现在一切正常,如果我给urllib一个字符串类型的对象,即使该对象包含什么是Unicode信息.我的功能叫做翻译.
例如:
stringtest1 = '無與倫比的美麗'
print translate(stringtest1)
导致正确的翻译和做
type(stringtest1)
确认这是一个字符串对象.
但如果这样做
stringtest1 = u'無與倫比的美麗'
并尝试使用我的翻译功能我收到此错误:
File "C:\Python27\lib\urllib.py", line 1275, in urlencode
v = quote_plus(str(v))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 2-8: ordinal not in range(128)
经过一番研究,似乎这是一个常见的问题:
> Problem: neither urllib2.quote nor urllib.quote encode the unicode strings arguments
> urllib.quote throws exception on Unicode URL
现在,如果我输入一个脚本
stringtest1 = '無與倫比的美麗'
stringtest2 = u'無與倫比的美麗'
print 'stringtest1',stringtest1
print 'stringtest2',stringtest2
执行它返回:
stringtest1 ???è???€??ˉ”??????éo—
stringtest2 無與倫比的美麗
但只需在控制台中键入变量:
>>> stringtest1
'\xe7\x84\xa1\xe8\x88\x87\xe5\x80\xab\xe6\xaf\x94\xe7\x9a\x84\xe7\xbe\x8e\xe9\xba\x97'
>>> stringtest2
u'\u7121\u8207\u502b\u6bd4\u7684\u7f8e\u9e97'
抓住我的.
我的问题是我无法控制要翻译的信息如何影响我的功能.而且似乎我必须以Unicode格式提供它,该函数不接受它.
那么,我如何将一件事转换成另一件事呢?
我已阅读Stack Overflow问题Convert Unicode to a string in Python (containing extra symbols).
但这不是我追求的. Urllib接受字符串对象但不接受Unicode对象,两者都包含相同的信息
好吧,至少在Web应用程序的眼中,我发送的是未更改的信息,我不确定它们是否仍然是Python中的等价物.
解决方法:
当您获得一个unicode对象并想要从中返回UTF-8编码的字节字符串时,请使用object.encode(‘utf8’).
你不知道传入的对象是str还是unicode似乎很奇怪 – 当然你也控制了该函数的调用站点了吗?!但如果情况确实如此,无论出于什么奇怪的原因,你可能需要这样的东西:
def ensureutf8(s):
if isinstance(s, unicode):
s = s.encode('utf8')
return s
它只是有条件地编码,也就是说,如果它接收到一个unicode对象,而不是它接收的对象已经是一个字节串.它在任何一种情况下都返回一个字节串.
顺便说一句,你的混淆的一部分似乎是因为你不知道只是在翻译提示下输入一个表达式会显示你的repr,这与你得到的打印效果不同;-).
内容总结
以上是互联网集市为您收集整理的将Unicode对象与非ASCII符号转换为字符串对象(在Python中)全部内容,希望文章能够帮你解决将Unicode对象与非ASCII符号转换为字符串对象(在Python中)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。