查看: 3400|回复: 8
收起左侧

[Tribon] 求助,TB二次开发中的问题

[复制链接]
发表于 2007-1-18 16:32 | 显示全部楼层 |阅读模式 来自: 中国辽宁葫芦岛

 其中有一些中文字符串, 在TB中就显示不了

是部分中文字符串显示不了吗?
可否对源数据进行编码转换?

回复

使用道具 举报

龙船学院
 楼主| 发表于 2007-1-18 17:16 | 显示全部楼层 |阅读模式 来自: 中国广东广州

今天又研究了一整天,问题应该是这样,在PYWIN中有下面的情况:

====

>>> a='中'
>>> a
'\xd6\xd0'
>>> b=u'\u4e2d'
>>> b
u'\u4e2d'
>>> print a

>>> print b

>>> str(a)
'\xd6\xd0'
>>> str(b)
Traceback (most recent call last):
  File "<interactive input>", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode character u'\u4e2d' in position 0: ordinal not in range(128)
>>>

=====

对于UNICODE码,在使用STR()函数时会出错, 我现在不知道怎么解决这个错误,我想是不是要把UNICODE转换为ACSII?

但没找到怎么转换,...........

在TB中的使用是通过COM读取外部数据库的数据,传递的参数是OBJECT类型(也试过STRING类型),参数中的中文总是用UNICODE码表示, 所以碰到STR()函数就出错, 弄得我焦头烂额~~~请大家帮忙啊~~~

回复

使用道具 举报

发表于 2007-1-18 20:27 | 显示全部楼层 |阅读模式 来自: 中国辽宁葫芦岛

尝试codecs.encode
TB和PYTHON都不会,以上仅供参考

回复

使用道具 举报

发表于 2007-1-18 20:29 | 显示全部楼层 |阅读模式 来自: 中国辽宁大连
>>> b = u'\u4e2d'
>>> type(b)
<type 'unicode'>
>>> b = b.encode('cp936') #转换成简体中文
>>> print b

>>> type(b)
<type 'str'>
回复

使用道具 举报

 楼主| 发表于 2007-1-19 12:20 | 显示全部楼层 |阅读模式 来自: 中国广东广州

感谢黑白和yang!!!

问题已经成功解决!!

其实我也用过了encode(),但不知编码名字,一直是乱码(用了utf-7,utf-8,utf-16)

再次多谢黑白和yang!!!

 

回复

使用道具 举报

发表于 2007-1-19 16:16 | 显示全部楼层 |阅读模式 来自: 中国辽宁葫芦岛
CP936对应的内码是GBK,写成encode("GBK")应该也行吧?
回复

使用道具 举报

发表于 2007-1-23 19:17 | 显示全部楼层 |阅读模式 来自: 中国江苏南通

不懂

还是菜鸟啊

嘿嘿

回复

使用道具 举报

发表于 2007-1-26 21:57 | 显示全部楼层 |阅读模式 来自: 中国上海
.encode('mbcs') 也可以。
回复

使用道具 举报

 楼主| 发表于 2007-1-18 07:55 | 显示全部楼层 来自: 中国广东广州

求助,TB二次开发中的问题

最近, 我碰到这样的问题, TB不支持UNICODE码的中文, 即我从外部数据库读取数据到TB中使用, 其中有一些中文字符串, 在TB中就显示不了, 在TB中原中文数据使用的是UNICODE的编码, 而TB好象只认ASCII码, 因此可能要进行内码转换, 但我并没有找到有效的办法, 请各位帮手, 不熟悉的人也可发表些意见, 扩大些思路~~

谢谢!!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|标签|免责声明|龙船社区

GMT+8, 2024-11-15 00:28

Powered by Imarine

Copyright © 2006, 龙船社区

快速回复 返回顶部 返回列表