在访问表中使用Unicode值并连接标签表达式

时间:2013-01-31 21:30:37

标签: python function unicode

我正在使用ArcGIS中的unicode值。基本上,我试图在访问表中设置一个字段,用于存储unicode值。我找到了这个编写unicode值的脚本示例。

import locale
locale.getdefaultlocale()
print u'Libert\u00e9'

返回:

Liberté

最后带有重音é

在我的无限智慧中,基于在python中使用unicode编码的新手经验,我想我可以这样做:

  1. 在访问表中创建文本字段

  2. 使用unicode值填充该字段,因此u00e9

  3. 定义一个类似

  4. 的python函数

    像这样:

    def FindLabel ( [Unicode] ):
      import locale
      locale.getdefaultlocale()
      return u'Libert\ + [Unicode] + "'"
    

    我正在使用它在ArcGIS中创建标签。

    这不起作用,我已经玩了一些返回语句,但我似乎无法让它工作......或者真的知道我正在尝试做什么应该工作。

    基本上,如果我确实让它工作,我想将unicode存储在访问表的字段中,所以我可以从中定义一个python函数。

    但话说回来,也许我正在尝试在这里尝试午餐。

    欢迎任何建议!麦克

1 个答案:

答案 0 :(得分:1)

似乎对Unicode的性质有一点误解。 Unicode是严格存在于Python程序范围内的东西。将数据写入文件或数据库表中的字段时,必须对该数据进行编码。

有了这个基础,我们继续讨论代码。与locale相关的两行目前没有做任何有效的工作。我怀疑你想做的事情更像是:

import locale

# if you're on Windows in the US most likely 
# the following is returned: ('en_US', 'cp1252')
deflang, defencoding = locale.getdefaultlocale() 

# now that you have encoded your data (from Unicode) 
# you may commit it to the database 
write_this_to_db = u'Libert\u00e9'.encode(defencoding)
# -> 'Libert\xe9'