кириллица из SDE

0 голосов
спросил 15 Май, 06 от bum2 (240 баллов) в категории Программные продукты Esri
При получении русских символов из фичи(ArcObject90SP3+Win2kPro) из сде(SDE90+ORACLE9i+Win2kSer) строковые значения отображаются не правильно. Пишет (EI "Nioeaaea") вместо (КП "Софиевка").
Хотя в АркМапе и АркКаталоге отображается корректно.

Как получить корректные русские символы из SDE?

5 Ответы

0 голосов
ответил 17 Май, 06 от Grigoriy (127,020 баллов)
Если в АркМапе и АркКаталоге отображается корректно, то проблема в Вашем приложении. А что Вы в нем делаете и на чем Вы его пишите - Вы не написали. Лучше этот вопрос обсуждать в разделе ArcObjects. Поищите также ответы на support.esri.com.
0 голосов
ответил 08 Июнь, 06 от bum2 (240 баллов)
Приложение пришется на VB6(SP6).
Платформа указана выше.
Поиск на support.esri.com  ничего не дал.
ESRI пишет что unicode поддерживается частично, и все.

Была аналогичная проблема с вставкой кириллицы в SDE.
Решилась таким способом:
'=============================
Function StringB(strIn As String) As String
  Dim res As String
  Dim cChar As String
  Dim i As Long
 
  If Not IsEmpty(strIn) Then
    For i = 1 To Len(strIn)
     
      cChar = Mid(strIn, i, 1)
     
      res = res & ChrB(Asc(cChar)) & ChrB(0)
    Next
  End If
  StringB = res

End Function
'=============================

Есть подозрение что при получении кириллицы из SDE, тоже требуется некоторое преобразование.

ЗЫ:
Кстати
приложение "DataConverter" написанное ESRI, при выгрузке фича класса из SDE в MDB, также портит русские буквы.
А АркКаталог при выгрузке не портит!

DataConverter был взят отсюда:
http://edndoc.esri.com/arcobjects/9.0/Samples/Geodatabase/Creating_and_Converting_Data/Convert_data_using_the_feature_data_converter/Convert_data_using_the_feature_data_converter.htm

прямой линк на проект:
http://edndoc.esri.com/arcobjects/9.0/DownloadCounter/startDownload.asp?File=/arcobjects/9.0/Samples/Geodatabase/Creating_and_Converting_Data/Convert_data_using_the_feature_data_converter/Convert_data_using_the_feature_data_converter.zip&Size=18&Name=Convert_data_using_the_feature_data_converter.zip
0 голосов
ответил 08 Июнь, 06 от Grigoriy (127,020 баллов)

SDE пока не поддерживает UNICODE. Полная поддержка появится в версии 9.2. Т.е. при разработке своего приложения Вы должны это учитывать и явно преобразовывать UNICODE строку в 8-битную кодировку - выбор которой определяется настройками SDE+SQL.

0 голосов
ответил 08 Июнь, 06 от bum2 (240 баллов)
Есть идеи как это сделать?
У Арккаталога это ведь получается!
0 голосов
ответил 09 Июнь, 06 от bum2 (240 баллов)
Ответ найден.

Необходимо вот такое преобразование строки:

'==========================================
Function StringBFromSDE(strIn As String) As String
  Dim res As String
  Dim uStr As String
  Dim i As Long
 
  uStr = StrConv(strIn, vbUnicode)
 
  res = ""
  If Not IsEmpty(uStr) Then
    For i = 1 To Len(uStr) Step 2
      res = res & Mid(uStr, i, 1)
    Next
  End If
  StringBFromSDE = res
End Function
'=====================================

Всем спасибо за внимание.

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...