Кодировка при возврате строк

lmike

lmike

нет, пердело совершенство
Lotus team
27.08.2008
7 256
439
если к-л образом строки попадают в java извне (результат по http как пример), то кодировка платформы может не совпадать с оной в результате
кодировка нотусячего клиенте по виндовз cp1251
посмотреть можно в дебаг консоли, через "p"
Опытным путем установил что это отражается в параметре file.encoding
опыт был произведен при настройке -Dfile.encoding=UTF8 , установкой его в окружении виндовз через JAVA_TOOL_OPTIONS , в картинках это
до установки: file.encoding=Cp1251, после: file.encoding=UTF8
 
  • Нравится
Реакции: VladSh
lmike

lmike

нет, пердело совершенство
Lotus team
27.08.2008
7 256
439
установка среды, а заоодно и java.pol с эскалацией прав (не проверял на появление UAC, просто взял )
Код:
%REM
    Function SaveAndbRun
    Description: Comments for Function
%END REM
Function SaveAndRun(param As String)
    On Error GoTo ErrH
    GoTo Begin
ErrH:
    Error Err, RaiseError
Begin:
'Your code goes here
    Dim NDC As NotesDocumentCollection
    Set NDC=SelectedDocsUI
    Dim doc As NotesDocument
    Set doc=NDC.getFirstDocument
    If Not doc Is Nothing Then
        Dim files List As String, res As String
        res=DetachFiles(doc, {body}, {*.cmd}, files)
        Dim launch As String
        If Len(res)>0 Then
            launch=res
            res=DetachFiles(doc, {body}, param, files)
            launch=launch & { } &res
            If Len(res)>0 Then
                Print {Launch: }launch
                res=Shell({cmd.exe /C } &launch, 1)
            End If
        End If
    End If
End Function
Код:
Public Function SelectedDocsUI() As NotesDocumentCollection
    On Error Goto ErrH
    Dim uiview As NotesUIView
    Dim doc As NotesDocument, NDC As NotesDocumentCollection, NDCtmp As NotesDocumentCollection
    Set uiview=wks.CurrentView
    If Not uiview Is Nothing Then
        Set NDCtmp=uiview.Documents
        DbgMsg {Selected in view:}& Cstr(NDCtmp.Count)
        Set doc=NDCtmp.GetFirstDocument
        If doc Is Nothing Then
            Set NDC= db.CreateDocumentCollection
            Set doc=db.GetDocumentByID(uiview.CaretNoteID)
            If doc Is Nothing Then Exit Function
            Call NDC.AddDocument(doc)
            Set doc=NDC.GetFirstDocument
        Else
            Set NDC= db.CreateDocumentCollection
            Set doc=NDCtmp.Getfirstdocument
            Do While Not doc Is Nothing
                Call NDC.Adddocument(GetDocumentByUNIDSilent(db, doc.Universalid))
                Set doc=NDCtmp.Getnextdocument(doc)
            Loop
        End If
    Else
        Set NDC= db.CreateDocumentCollection
        Set doc=gses.DocumentContext
        If Not doc Is Nothing Then Call NDC.AddDocument(doc)
    End If
    Set SelectedDocsUI=NDC
Quit:
    Exit Function
ErrH:
    Error Err, RaiseError
End Function
Код:
Function DetachFiles(objdoc As NotesDocument, fld As String, filter As String, filesList List As String) As String
    Dim file As String, path As String
    Dim rtItem As NotesRichTextItem
    Dim docItem As NotesItem
   
    On Error Goto ErrorHandler
    Erase filesList
    Set docItem=objdoc.GetFirstItem(fld)
    If Not docItem Is Nothing Then
        DbgMsg("RichText:" & Cstr(docItem.Type = RICHTEXT))
        If docItem.Type=RICHTEXT Then
            Set rtItem=docItem
        End If
    End If
   
    path=GetNotesTempDirectory() & {\}
    file=""
    If objdoc.Hasembedded Then  
        If ( Not rtItem Is Nothing ) Then
            If (Not Isempty(rtitem.EmbeddedObjects))Then
                Forall o In rtitem.EmbeddedObjects
                    Dim detach As Boolean
                    detach=True
                    If (filter<>"") Then
                        If Not (Lcase(o.Name) Like LCase(filter)) Then
                            detach=False
                        End If
                    End If
                    If detach Then
                        file=o.Name
                        filesList(file)=path
                        Call o.ExtractFile(path & file)
                    End If
                End Forall
            End If
        End If          
    End If
    If file<>"" Then DetachFiles=path & file
ExitFunction:
    Exit Function
ErrorHandler:
    Call RaiseError()
    Erase filesList
    Resume ExitFunction
End Function
GetNotesTempDirectory() СиАПИ, здесь была раз 100500
пример файлов в архиве, кладутся в док
код для кнопки - просто вызвать SaveAndRun {*.pol}
 

Вложения

  • Нравится
Реакции: alexas1
Мы в соцсетях:  ТелеграмВконтактеДзенФейсбукТвиттерЮтуб