1

ArcGIS で 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 ステートメントを少しいじりましたが、機能しないようです....または、私がやろうとしていることが機能するかどうかを本当に知っています。

基本的に、それが機能するようになったら、ユニコードをアクセス テーブルのフィールドに格納したいので、そこから python 関数を定義できます。

しかし、繰り返しになりますが、私がここで試みようとしていることについて昼食をとっているのかもしれません。

どんな提案も大歓迎です!マイク

4

1 に答える 1

1

Unicode の性質について、若干の誤解があるようです。Unicode は、Python プログラムの範囲内に厳密に存在するものです。データをファイル (またはデータベース テーブルのフィールド) に書き込むときは、そのデータをエンコードする必要があります。

その基礎を踏まえて、コードに移りましょう。に関連する 2 行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 に答える