Python论坛  - 讨论区

标题:[python-chinese] 如何把uncode object转为str

2005年08月18日 星期四 17:11

Jason Liu telecomliu at gmail.com
Thu Aug 18 17:11:50 HKT 2005

有的函数好像不支持除ascii之外的unicode object

谢谢!

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月18日 星期四 17:15

limodou limodou at gmail.com
Thu Aug 18 17:15:34 HKT 2005

在 05-8-18,Jason Liu<telecomliu at gmail.com> 写道:
> 有的函数好像不支持除ascii之外的unicode object

是的。需要使用unicode对象本身的encode方法。

-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月18日 星期四 23:47

Jason Liu telecomliu at gmail.com
Thu Aug 18 23:47:07 HKT 2005

在 05-8-18,limodou<limodou at gmail.com> 写道:
 
> 是的。需要使用unicode对象本身的encode方法。
> 
我试过。如果unicode object中包含>127的字符就不能用unicode.encode('ascii')来转换,否则会报错。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月19日 星期五 01:13

Jacob Fan jacob.fan at gmail.com
Fri Aug 19 01:13:26 HKT 2005

On 8/18/05, Jason Liu <telecomliu at gmail.com> wrote:
> 在 05-8-18,limodou<limodou at gmail.com> 写道:
> 
> > 是的。需要使用unicode对象本身的encode方法。
> >
> 我试过。如果unicode object中包含>127的字符就不能用unicode.encode('ascii')来转换,否则会报错。
如果你的字符串里包含非ascii字符,你当然不能用unicode.encode('ascii')了。ascii是一种编码,不是Python(非unicode)字符串的称呼。你可以将一个unicode字符串编码成ascii之外的合适的(要看你的具体内容)的编码。我建议你编码成utf-8,unicode.encode("utf-8")。如果你想得到gbk编码的字符串,你也可以用unicode.encode("gtk"),但你要保证其中只有ascii字符和中文。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月19日 星期五 08:29

Jason Liu telecomliu at gmail.com
Fri Aug 19 08:29:15 HKT 2005

在 05-8-19,Jacob Fan<jacob.fan at gmail.com> 写道:

> 如果你的字符串里包含非ascii字符,你当然不能用unicode.encode('ascii')了。ascii是一种编码,不是Python(非unicode)字符串的称呼。你可以将一个unicode字符串编码成ascii之外的合适的(要看你的具体内容)的编码。我建议你编码成utf-8,unicode.encode("utf-8")。如果你想得到gbk编码的字符串,你也可以用unicode.encode("gtk"),但你要保证其中只有ascii字符和中文。

老大,我想要的是把uncode
object转为str。问题的出发点就是有的函数不支持unicode参数,而我的字符串是包含中文字符的unicode
object,至于它是不是utf-8跟我的问题没关系啊。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月19日 星期五 09:00

limodou limodou at gmail.com
Fri Aug 19 09:00:58 HKT 2005

在 05-8-19,Jason Liu<telecomliu at gmail.com> 写道:
> 在 05-8-19,Jacob Fan<jacob.fan at gmail.com> 写道:
> 
> > 如果你的字符串里包含非ascii字符,你当然不能用unicode.encode('ascii')了。ascii是一种编码,不是Python(非unicode)字符串的称呼。你可以将一个unicode字符串编码成ascii之外的合适的(要看你的具体内容)的编码。我建议你编码成utf-8,unicode.encode("utf-8")。如果你想得到gbk编码的字符串,你也可以用unicode.encode("gtk"),但你要保证其中只有ascii字符和中文。
> 
> 老大,我想要的是把uncode
> object转为str。问题的出发点就是有的函数不支持unicode参数,而我的字符串是包含中文字符的unicode
> object,至于它是不是utf-8跟我的问题没关系啊。
> 

对于str来说它可以有许多的编码方式,当然与你的问题有关系呀。比如说unicode字符"中国"u'\u4e2d\u56fd'转换为gb2312码方式的字符串为:'\xd6\xd0\xb9\xfa',而转为utf-8为:'\xe4\xb8\xad\xe5\x9b\xbd'。因为不同的编码生成的字符串编码也是不同的。如果都是ascii就没有这个问题,而对于中文就不那么简单。


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月19日 星期五 10:23

Jason Liu telecomliu at gmail.com
Fri Aug 19 10:23:14 HKT 2005

在 05-8-19,limodou<limodou at gmail.com> 写道:

> 对于str来说它可以有许多的编码方式,当然与你的问题有关系呀。比如说unicode字符"中国"u'\u4e2d\u56fd'转换为gb2312码方式的字符串为:'\xd6\xd0\xb9\xfa',而转为utf-8为:'\xe4\xb8\xad\xe5\x9b\xbd'。因为不同的编码生成的字符串编码也是不同的。如果都是ascii就没有这个问题,而对于中文就不那么简单。

我遇到的问题是有个函数只能识别str(包含中文)参数,遇到unicode(包含中文)就报错,与这个unicode object本身的编码方式无关。

因此我想问问有没有将unicode object转换成str的方法,所以我才说编码方式与我的问题无关的。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月19日 星期五 10:37

梅劲松  stephen.cn at gmail.com
Fri Aug 19 10:37:47 HKT 2005

encode和decode可以。

在 05-8-19,Jason Liu<telecomliu at gmail.com> 写道:
> 在 05-8-19,limodou<limodou at gmail.com> 写道:
> 
> > 对于str来说它可以有许多的编码方式,当然与你的问题有关系呀。比如说unicode字符"中国"u'\u4e2d\u56fd'转换为gb2312码方式的字符串为:'\xd6\xd0\xb9\xfa',而转为utf-8为:'\xe4\xb8\xad\xe5\x9b\xbd'。因为不同的编码生成的字符串编码也是不同的。如果都是ascii就没有这个问题,而对于中文就不那么简单。
> 
> 我遇到的问题是有个函数只能识别str(包含中文)参数,遇到unicode(包含中文)就报错,与这个unicode object本身的编码方式无关。
> 
> 因此我想问问有没有将unicode object转换成str的方法,所以我才说编码方式与我的问题无关的。
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
梅劲松

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月19日 星期五 10:54

limodou limodou at gmail.com
Fri Aug 19 10:54:55 HKT 2005

在 05-8-19,Jason Liu<telecomliu at gmail.com> 写道:
> 在 05-8-19,limodou<limodou at gmail.com> 写道:
> 
> > 对于str来说它可以有许多的编码方式,当然与你的问题有关系呀。比如说unicode字符"中国"u'\u4e2d\u56fd'转换为gb2312码方式的字符串为:'\xd6\xd0\xb9\xfa',而转为utf-8为:'\xe4\xb8\xad\xe5\x9b\xbd'。因为不同的编码生成的字符串编码也是不同的。如果都是ascii就没有这个问题,而对于中文就不那么简单。
> 
> 我遇到的问题是有个函数只能识别str(包含中文)参数,遇到unicode(包含中文)就报错,与这个unicode object本身的编码方式无关。

str本身就有许多的编码,"中国"可以用gb2312编码也可以使用utf-8编码,编码不同但它们还算是string。我并没有说是unicode本身的编码方式,而是unicode转为str时编码不同转换的结果不同,而且有些指定的编码不对还会报错。
> 
> 因此我想问问有没有将unicode object转换成str的方法,所以我才说编码方式与我的问题无关的。
> 
unicode转换为string就是使用unicode本身的encode就行,但要指明你所使用的编码。编码不对根本就转不了。因此你写的a.encode('ascii')才会报错。这就是原因:你的编码没指对。

-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月19日 星期五 16:00

Jason Liu telecomliu at gmail.com
Fri Aug 19 16:00:49 HKT 2005

在 05-8-19,limodou<limodou at gmail.com> 写道:

> str本身就有许多的编码,"中国"可以用gb2312编码也可以使用utf-8编码,编码不同但它们还算是string。我并没有说是unicode本身的编码方式,而是unicode转为str时编码不同转换的结果不同,而且有些指定的编码不对还会报错。


是我错了。一知半解还自以为很懂,惭愧惭愧!

谢谢大家的指导和耐心!

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号