Lotusstream и Cp866

phantom76

Lotus team
25.02.2005
360
4
#1
Кто нибудь решал такую задачу, столкнулся что LotusStream не знает такую кодировку (CP866) ..
как можно еще решить задачу выгрузки данных в формате дос?
 

phantom76

Lotus team
25.02.2005
360
4
#3
этот вариант уже пробывал.. не выгружает..

в хелпе есть конекторы, но как ими пользоваться пока не знаю..

The list is given as text stream format constants. Any of these values may be used as a stream format for a text stream when creating scripts using the Lotus Connectors LotusScript Extensions. To indicate the character set on the local machine, use the constant LCSTREAMFMT_NATIVE. When providing a character set on the LEI Administrator, use the stream format constant with the prefix ”LCSTREAMFMT_” removed. For DECS see "Forcing LEI or DECS to Use a Character Set as Native" in this chapter.
Stream Format Constant Description
LCSTREAMFMT_LICS Lotus International Character Set
LCSTREAMFMT_IBMCP851 MS-DOS PC Greek (CP 851)
LCSTREAMFMT_IBMCP852 MS-DOS PC Eastern European (CP 852)
LCSTREAMFMT_IBMCP853 MS-DOS PC Turkish (CP 853)
LCSTREAMFMT_IBMCP857 MS-DOS PC Turkish (CP 857)
LCSTREAMFMT_IBMCP862 MS-DOS PC Hebrew (CP 862)
LCSTREAMFMT_IBMCP864 MS-DOS PC Arabic (CP 864)
LCSTREAMFMT_IBMCP866 MS-DOS PC Cyrillic Unicode (CP 866)
LCSTREAMFMT_IBMCP437 MS-DOS PC US (CP 437)
LCSTREAMFMT_IBMCP850 MS-DOS PC Western European (CP 850)
LCSTREAMFMT_IBMCP855 MS-DOS PC Cyrillic (CP 855)
LCSTREAMFMT_IBMCP860 MS-DOS PC Portuguese (CP 860)
LCSTREAMFMT_IBMCP861 MS-DOS PC Icelandic (CP 861)
LCSTREAMFMT_IBMCP863 MS-DOS PC Canadian French (CP 863)
LCSTREAMFMT_IBMCP865 MS-DOS PC Norwegian (CP 865)
LCSTREAMFMT_IBMCP869 MS-DOS PC Greek (CP 869)
LCSTREAMFMT_IBMCP899 IBM Code Page 899 (CP 899)
 

phantom76

Lotus team
25.02.2005
360
4
#5
это в все уже пробывал... нужно выгрузить в текстовый файлик под досовскую русскую кодировку cp866..
в описании notesStream :
Valid character sets include: ASCII, Big5, Binary, EUC-JP, EUC-KR, EUC-TW, GB2312, ISO-2022-JP, ISO-2022-KR, ISO-8859-1 through ISO-8859-9, ISO-8859-15, KOI8-R, Latin4, Shift_JIS, System, TCVN3, Unicode, Unicode-1-1, US-ASCII, UTF-7, UTF-8, UTF-16, UTF-16BE, UTF-16LE, Windows-1250 through Windows-1258, and Windows-874. Binary implies byte operations only on the stream. Unicode is the same as UTF-16 and Unicode-1-1 is a compatible subset of UTF-16.

т.е. русской досевой нет в описании.. :( джавой пока не владею, чтобы на ней написать..
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#6
вот это попробуй, но корректность функции я не проверял (стиль кода ужасен)
Код:
Private Function toDOS(Byval s_str$) As String
On Error Resume Next
Dim k%, n_asc%, s_chr$, FR$
For k = Len(s_str) To 1 Step - 1
s_chr = Mid(s_str, k, 1)
n_asc = Asc(s_chr)
If n_asc = 168 Then
s_chr = Chr(240)
Elseif n_asc = 184 Then
s_chr = Chr(241)
Elseif n_asc >= 192 And n_asc <= 239 Then
s_chr = Chr(n_asc - 64)
Elseif n_asc >= 240 And n_asc <= 255 Then
s_chr = Chr(n_asc - 16)
End If
FR = s_chr + FR
Next k
toDOS = FR
End Function
 

phantom76

Lotus team
25.02.2005
360
4
#7
вот это попробуй, но корректность функции я не проверял (стиль кода ужасен)
Код:
Private Function toDOS(Byval s_str$) As String
On Error Resume Next
Dim k%, n_asc%, s_chr$, FR$
For k = Len(s_str) To 1 Step - 1
s_chr = Mid(s_str, k, 1)
n_asc = Asc(s_chr)
If n_asc = 168 Then
s_chr = Chr(240)
Elseif n_asc = 184 Then
s_chr = Chr(241)
Elseif n_asc >= 192 And n_asc <= 239 Then
s_chr = Chr(n_asc - 64)
Elseif n_asc >= 240 And n_asc <= 255 Then
s_chr = Chr(n_asc - 16)
End If
FR = s_chr + FR
Next k
toDOS = FR
End Function
Огромное спасибо!!! Работает!! :(
 
D

dsdred

#8
Зарание извеняюсь, я работаю админом системы документооборота основоной на Лотус,
но тоже столкнулся с этой проблемой, а в програмировании на Лотус я чайник.
Подскажите пожалуйста куда эту функцию подставить нужно?
 
S

Sandr

#9
Эту функцию вставте в какую-нит библиотеку.
Потом, там где Вам нужно её использовать подключайте эту библиотеку и вызывайте функцию...
 
S

Sandr

#11
Выберите на кнопке язык Lotus Script, скопируйте эту функцию и вставте на кнопке под последней строчкой процедуры Click (за End Sub). Она сама переместится куда надо.
В сасой процедруе Click вызывайте эту функцию.

Код:
dim dosString as string
dosString = toDOS("срока для преобразования")