1

我在 ArcGIS 中使用 unicode 值。基本上,我正在尝试在存储 unicode 值的访问表中设置一个字段。我发现这个脚本示例可以对 unicode 值进行编码。

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

这将返回:

Liberté

结尾带有重音 é

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

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

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

  3. 定义一个python函数,如

像这样:

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

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

这不起作用,我已经玩过 return 声明了一点,但我似乎无法让它工作......或者真的知道我想要做的事情是否应该工作。

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

但话又说回来,也许我要出去吃午饭了,我想在这里尝试什么。

欢迎任何建议!麦克风

4

1 回答 1

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'
于 2013-01-31T22:29:35.143 回答