2015-08-27 2 views
-1

У меня есть шейп-файл (.shp) с именами полей wriiten на японском языке. Я хотел бы прочитать имена полей в японском языке с помощью программы ниже:Преобразование полей Юникода в тексты

import ogr 
infile = r"E:\shp\test.shp" 
ds = ogr.Open(infile,0); slayer = ds.GetLayer(0) 
fieldNames = [slayer.GetLayerDefn().GetFieldDefn(i).GetName() for i in range(0,slayer.GetLayerDefn().GetFieldCount())] 

for x in fieldNames: 
    print x 

Но, распечатаны следующим образом, который не читается.

ツwヘW 
ツxヘW 
’c’n–¼ 

Как я могу получить японский текст для названий полей?

Я также попробовал, как x.decode('utf8'), но получил сообщение об ошибке UnicodeDecodeError: 'utf8' codec can't decode byte 0x95 in position 0: invalid start byte

Как сделать это, ребята?

+0

'печать тип (х)' 'дает string' хотя! – gudlife

ответ

0

Неполадка здесь, просто попытка помочь, но, может быть, попробуйте лить строку как последовательность юникодов, как это?

a = "Hello, World!" 
u = unicode(a,'utf-8') 

print type(a) 
print a 
print type(u) 
print u 

выход:

<type 'str'> 
Hello! 
<type 'unicode'> 
Hello! 
+0

'UnicodeDecodeError: 'utf8' кодек не может декодировать байт 0x82 в позиции 3: недопустимый стартовый байт', используя' print unicode (x, 'utf-8') ' – gudlife

+0

Хмм ... Idk, если это полезно, но 0x82 - это управляющий символ в unicode ... – Dportology

+0

Попробуйте другие кодировки, кроме utf8. попробуйте ISO-8859-1 – Dportology

Смежные вопросы