Python论坛  - 讨论区

标题:[python-chinese] 真是奇怪呀!

2005年02月19日 星期六 00:18

limodou limodou at gmail.com
Sat Feb 19 00:18:28 HKT 2005

好象不行。就象底层的文件操作一样,都是ascii字符的,不支持unicode(因为
unicode一般是2个字节)。

先转化为utf-8再传送,收到后再转为unicode即可。

cry wrote:
> python,您好!
> 
> 我准备了一个UNICODE字符串,里面又中文又数字,在socket下用send()方法送,居然出现encode错误,难道send是不能发送unicode吗?
> 
>         from types import StringType, UnicodeType
>         ss = s+"\r\n"
>         print isinstance(ss, UnicodeType)
>         self._sock.send(ss)
> 
> True
> 
> UnicodeEncodeError: 'ascii' codec can't encode characters in position 34-36: ordinal not in range(128)
> 
> 谁知道这个问题怎么解决吗?
> 
> 看来PYTHON不在核心代码中解决字符编码是不行的。
> 
>> 礼!
> 
>             cry
>             zyqmail at 163.net
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 

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


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

2005年02月19日 星期六 00:25

cry zyqmail at 163.net
Sat Feb 19 00:25:41 HKT 2005

limodou,您好!

关键是SOCKET的另一端还需要做这种工作,启不是很麻烦。别人做应用也麻烦。
那换一个思路,unicode转换成字节串,用什么方法?

在 2005-02-19 00:18:00 您写道:
>好象不行。就象底层的文件操作一样,都是ascii字符的,不支持unicode(因为
>unicode一般是2个字节)。
>
>先转化为utf-8再传送,收到后再转为unicode即可。
>
>cry wrote:
>> python,您好!
>> 
>> 我准备了一个UNICODE字符串,里面又中文又数字,在socket下用send()方法送,居然出现encode错误,难道send是不能发送unicode吗?
>> 
>>         from types import StringType, UnicodeType
>>         ss = s+"\r\n"
>>         print isinstance(ss, UnicodeType)
>>         self._sock.send(ss)
>> 
>> True
>> 
>> UnicodeEncodeError: 'ascii' codec can't encode characters in position 34-36: ordinal not in range(128)
>> 
>> 谁知道这个问题怎么解决吗?
>> 
>> 看来PYTHON不在核心代码中解决字符编码是不行的。
>> 
>>>> 礼!
>> 
>>             cry
>>             zyqmail at 163.net
>> 
>> 
>> _______________________________________________
>> python-chinese list
>> python-chinese at lists.python.cn
>> http://python.cn/mailman/listinfo/python-chinese
>> 
>
>-- 
>I love python!
>My Blog: http://www.donews.net/limodou
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese

                    致
礼!

            cry
            zyqmail at 163.net




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

2005年02月19日 星期六 17:10

Qiangning Hong hongqn at gmail.com
Sat Feb 19 17:10:44 HKT 2005

unicode和string是两个不同的类型。send只能send
string,如果给send一个unicode类型的参数,它会将其自动转化为string,即编码。而在不显示指定编码方式的情况下,则是使用sys.getdefaultencoding()的返回值作为编码方式。这个值默认是'ascii',可以通过在sitecustomize.py中使用sys.setdefaultencoding()来修改。

unicode是一个字符集,可以对应很多种编码方式。UTF-8和UCS-2(即limodou说的"一般是2个字节")是比较常见的unicode编码。


On Sat, 19 Feb 2005 00:18:28 +0800, limodou <limodou at gmail.com> wrote:
> 好象不行。就象底层的文件操作一样,都是ascii字符的,不支持unicode(因为
> unicode一般是2个字节)。
> 
> 先转化为utf-8再传送,收到后再转为unicode即可。
> 
> cry wrote:
> > python,您好!
> >
> > 我准备了一个UNICODE字符串,里面又中文又数字,在socket下用send()方法送,居然出现encode错误,难道send是不能发送unicode吗?
> >
> >         from types import StringType, UnicodeType
> >         ss = s+"\r\n"
> >         print isinstance(ss, UnicodeType)
> >         self._sock.send(ss)
> >
> > True
> >
> > UnicodeEncodeError: 'ascii' codec can't encode characters in position 34-36: ordinal not in range(128)
> >
> > 谁知道这个问题怎么解决吗?
> >
> > 看来PYTHON不在核心代码中解决字符编码是不行的。
> >
> >                     致
> > 礼!
> >
> >             cry
> >             zyqmail at 163.net
> >
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> 
> --
> I love python!
> My Blog: http://www.donews.net/limodou
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


-- 
Excellent FOSS (Free/Open Source Software):

Get Firefox!
http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1

Reclaim Your Inbox!
http://www.spreadfirefox.com/?q=affiliates&id=67907&t=183


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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号