如果您对Python的“此Unicode的最佳ASCII”数据库在哪里?和pythonunicodedata感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Python的“此Unicode的最佳
如果您对Python的“此Unicode的最佳ASCII”数据库在哪里?和python unicodedata感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Python的“此Unicode的最佳ASCII”数据库在哪里?的各种细节,并对python unicodedata进行深入的分析,此外还有关于Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符、Python ascii utf Unicode、python UnicodeDecodeError: ''ascii'' codec can''t ...、python UnicodeEncodeError: ''ascii'' codec 错误的处理的实用技巧。
本文目录一览:- Python的“此Unicode的最佳ASCII”数据库在哪里?(python unicodedata)
- Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符
- Python ascii utf Unicode
- python UnicodeDecodeError: ''ascii'' codec can''t ...
- python UnicodeEncodeError: ''ascii'' codec 错误的处理
Python的“此Unicode的最佳ASCII”数据库在哪里?(python unicodedata)
我有一些使用Unicode标点符号的文本,例如左双引号,单引号的右单引号等等,我需要用ASCII。Python是否有一个包含这些字符的数据库,这些数据库具有明显的ASCII替代物,所以我可以做得比将它们全部都变成“”更好。?
Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符
我有一个只有一个命令的简单脚本:
#!/usr/bin/env python3 print("Příliš žluťoučký kůň úpěl ďábelské ódy.") # Text in Czech
当我尝试运行此脚本时:
python3 hello.py
我收到这条消息:
Traceback (most recent call last): File "hello.py",line 2,in <module> print("P\u0159\xedli\u0161 \u017elu\u0165ou\u010dk\xfd k\u016fn \xfap\u011bl \u010f\xe1belsk\xe9 \xf3dy.") UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
我正在使用Kubuntu 16.04和Python 3.5.2.
当我尝试这个:导出PYTHONIOENCODING = utf-8它只能暂时工作.下次我打开bash时遇到了同样的错误.
根据https://docs.python.org/3/howto/unicode.html#the-string-type
Python源代码的默认编码是UTF-8.
所以我把源文件保存为id UTF-8,Konsole设置为UTF-8但我仍然得到错误!
即使我补充说
# -*- coding: utf-8 -*-
从一开始它什么都不做.
另一个奇怪的事情:当我只使用python而不是python3运行它时,它可以工作.如何在Python 2.7.12中工作而不是在3.5.2中工作?
永久解决这个问题的任何想法?谢谢.
解决方法
当我运行语言环境时,输出是:
LANG=C LANGUAGE= LC_CTYPE="C" LC_NUMERIC=cs_CZ.UTF-8 LC_TIME=cs_CZ.UTF-8 LC_COLLATE=cs_CZ.UTF-8 LC_MONETARY=cs_CZ.UTF-8 LC_MESSAGES="C" LC_PAPER="C" LC_NAME="C" LC_ADDRESS="C" LC_TELEPHONE="C" LC_MEASUREMENT=cs_CZ.UTF-8 LC_IDENTIFICATION="C" LC_ALL=
此“C”是使用ANSI charmap的默认设置.这就是问题所在.运行locale charmap给了我:ANSI_X3.4-1968,它不能显示非英文字符.
我用这个Ubuntu documentation site解决了这个问题.
我将这些行添加到/ etc / default / locale:
LANGUAGE=cs_CZ.UTF-8 LC_ALL=cs_CZ.UTF-8
然后,您必须重新启动会话(注销并进入)才能应用这些设置.
运行语言环境现在返回此输出:
LANG=C LANGUAGE=cs LC_CTYPE="cs_CZ.UTF-8" LC_NUMERIC="cs_CZ.UTF-8" LC_TIME="cs_CZ.UTF-8" LC_COLLATE="cs_CZ.UTF-8" LC_MONETARY="cs_CZ.UTF-8" LC_MESSAGES="cs_CZ.UTF-8" LC_PAPER="cs_CZ.UTF-8" LC_NAME="cs_CZ.UTF-8" LC_ADDRESS="cs_CZ.UTF-8" LC_TELEPHONE="cs_CZ.UTF-8" LC_MEASUREMENT="cs_CZ.UTF-8" LC_IDENTIFICATION="cs_CZ.UTF-8" LC_ALL=cs_CZ.UTF-8
并运行locale charmap返回:
UTF-8
Python ascii utf Unicode
当我解析XML时p = xml.parsers.expat.ParserCreate()
:
<name>Fortuna Düsseldorf</name>
字符解析事件处理程序包括u''\xfc''
。
怎么能u''\xfc''
变成u''ü''
?
这是本文中的主要问题,其余仅显示对此的进一步(令人发指)的想法
Python unicode不会被破坏,因为它u''\xfc''
会产生收益u''ü''
吗?u’\
xfc’已经是一个unicode字符串,因此再次将其转换为unicode不起作用!将其转换为ASCII也不起作用。
我发现唯一可行的方法是:(这不是故意的,对吧?)
exec( ''print u\'''' + ''Fortuna D\xfcsseldorf''.decode(''8859'') + u''\'''')
用utf-8替换8859失败!这有什么意义呢?
另外,Python unicode
HOWTO有什么意义?-它仅提供失败示例,而不是说明如何进行实际操作中实际使用的转换(尤其是在这里提出类似问题的ppl猎犬)。
Unicode并不是魔术-为什么这里有那么多的ppl出现问题?
Unicode转换的根本问题很简单:
一个双向查找表’\ xFC’<->u’ü’
unicode( ''Fortuna D\xfcsseldorf'' )
为什么Python的创建者认为显示错误而不是简单地产生此错误更好的原因是u''Fortuna Düsseldorf''
什么?
还有为什么他们使它不可逆?
>>> u''Fortuna Düsseldorf''.encode(''utf-8'') ''Fortuna D\xc3\xbcsseldorf'' >>> unicode(''Fortuna D\xc3\xbcsseldorf'',''utf-8'') u''Fortuna D\xfcsseldorf''
答案1
小编典典您 已经拥有了价值 。Python只是通过为您提供ASCII友好的表示形式来尝试简化 调试
。在解释器中回显值会为您提供调用repr()
结果的结果。
换句话说,您正在将值的 表示
与值本身混淆。该表示旨在安全地复制和粘贴,而不必担心其他系统如何处理非ASCII代码点。因此,使用了Python字符串文字语法,所有不可打印的和非ASCII字符都由\xhh
和\uhhhh
转义序列代替。将这些字符串粘贴回Python字符串或交互式Python会话中,将再现完全相同的值。
如此ü
已被替换\xfc
,因为这是带有DIAERESIS代码点的U +
00FC拉丁文小写字母U的 Unicode代码
点。
如果您的终端配置正确,则可以使用print
,Python会将Unicode值编码到您的终端编解码器中,从而在终端显示中显示非ASCII字形:
>>> u''Fortuna Düsseldorf''u''Fortuna D\xfcsseldorf''>>> print u''Fortuna Düsseldorf''Fortuna Düsseldorf
如果为终端配置了UTF-8,则还可以在显式编码后将UTF-8字节直接写入终端:
>>> u''Fortuna Düsseldorf''.encode(''utf8'')''Fortuna D\xc3\xbcsseldorf''>>> print u''Fortuna Düsseldorf''.encode(''utf8'')Fortuna Düsseldorf
另一种方法是升级到Python
3;有repr()
只使用针对没有可打印的字符的码点的转义序列(控制码,保留码点,替代物,等等;如果码点是不是一个空间,但在下降C*
或Z*
一般类别,它被转义)。新ascii()
功能repr()
仍然为您提供Python
2的行为。
python UnicodeDecodeError: ''ascii'' codec can''t ...
我用的windows系统,Python2.7
总是报错:UnicodeDecodeError: ''ascii'' codec can''t decode byte 0xe3 in position 0: ordinal not in range(128)
终于找到解决方法了:
在python的Lib/site-packages 文件夹下新建sitecustomize.py
内容:
#encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding(''utf-8'')
python UnicodeEncodeError: ''ascii'' codec 错误的处理
今天用pyhon写入文本文件时发生了错误:
UnicodeEncodeError: ''ascii'' codec can''t encode characters in position 96-98: ord
inal not in range(128)
解决方法:
在脚本文件开头加上
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
我们今天的关于Python的“此Unicode的最佳ASCII”数据库在哪里?和python unicodedata的分享已经告一段落,感谢您的关注,如果您想了解更多关于Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符、Python ascii utf Unicode、python UnicodeDecodeError: ''ascii'' codec can''t ...、python UnicodeEncodeError: ''ascii'' codec 错误的处理的相关信息,请在本站查询。
本文标签: