Python Unicode的转换
我是python的新手 我有一个泰米尔语的unicode 当我使用sys.getdefaultencoding()时,我得到的输出是“Cp1252” 我的要求是,当我使用text=testString.decode(“utf-8”)时,我会得到错误“UnicodeEncodeError:'charmap'编解码器无法对位置0-8中的字符进行编码:字符映射到未定义” 当我使用 sys.getdefaultencoding()我得到 输出为“Cp1252” 对此有两点评论:(1)是“cp1252”,而不是“cp1252”。不要凭记忆打字。(2) 无论是谁导致sys.getdefaultencoding()生成“cp1252”,都应该礼貌地告诉他这不是一个好主意 至于其余的,让我猜猜看。您有一个Python Unicode的转换,python,Python,我是python的新手 我有一个泰米尔语的unicode 当我使用sys.getdefaultencoding()时,我得到的输出是“Cp1252” 我的要求是,当我使用text=testString.decode(“utf-8”)时,我会得到错误“UnicodeEncodeError:'charmap'编解码器无法对位置0-8中的字符进行编码:字符映射到未定义” 当我使用 sys.getdefaultencoding()我得到 输出为“Cp1252” 对此有两点评论:(1)是“cp1252”,
unicode
对象,其中包含一些泰米尔语文本。你错误地试图解码它。解码意味着从str
对象转换为unicode
对象。不幸的是,您没有str
对象,更不幸的是,您被Python2中为数不多的一个糟糕的缺点所困扰:它试图通过使用系统默认编码对unicode
字符串进行编码来创建str
对象。如果是“ascii”或“cp1252”,编码将失败。这就是为什么会出现Unicode*En*codeError而不是Unicode*De*codeError
简短回答:如果您真的想这样做,请执行text=testString.encode(“utf-8”)
。否则,请解释您要执行的操作,并向我们显示打印repr(testString)的结果
当我使用
sys.getdefaultencoding()我得到
输出为“Cp1252”
对此有两点评论:(1)是“cp1252”,而不是“cp1252”。不要凭记忆打字。(2) 无论是谁导致sys.getdefaultencoding()生成“cp1252”,都应该礼貌地告诉他这不是一个好主意
至于其余的,让我猜猜看。您有一个unicode
对象,其中包含一些泰米尔语文本。你错误地试图解码它。解码意味着从str
对象转换为unicode
对象。不幸的是,您没有str
对象,更不幸的是,您被Python2中为数不多的一个糟糕的缺点所困扰:它试图通过使用系统默认编码对unicode
字符串进行编码来创建str
对象。如果是“ascii”或“cp1252”,编码将失败。这就是为什么会出现Unicode*En*codeError而不是Unicode*De*codeError
简短回答:如果您真的想这样做,请执行
text=testString.encode(“utf-8”)
。否则,请解释您要执行的操作,并向我们显示打印报告(testString)的结果。将此添加为您的第一行代码
# -*- coding: utf-8 -*-
稍后在代码中
text=unicode(testString,“UTF-8”)将其添加为第一行代码
# -*- coding: utf-8 -*-
稍后在代码中
text=unicode(testString,“UTF-8”)您需要知道testString使用的是哪个字符编码。如果不是utf8,则在使用decode(“utf8”)时会发生错误。您需要知道testString使用的是哪个字符编码。如果不是utf8,则在使用decode(“utf8”)时会发生错误。您使用的是什么版本的Python?您的泰米尔字符串是Unicode字符串吗,如
u'தமிழ்'代码>文字,还是8位字符串?““解码”表示“从8位编码转换为Unicode”testString.decode(“utf-8”)
假设testString
在utf-8中。是这样吗?如果ord(testString[0])
低于256,则为8位,如果略高于2900,则可能为Unicode泰米尔。CP1252绝对是一个错误的代码页,它是一个欧洲代码页。检查您的区域设置。您使用的是什么版本的Python?您的泰米尔字符串是Unicode字符串吗,如u'தமிழ்'代码>文字,还是8位字符串?““解码”表示“从8位编码转换为Unicode”testString.decode(“utf-8”)
假设testString
在utf-8中。是这样吗?如果ord(testString[0])
低于256,则为8位,如果略高于2900,则可能为Unicode泰米尔。CP1252绝对是一个错误的代码页,它是一个欧洲代码页。检查您的区域设置。