[dba-Tech] vb script

MartyConnelly martyconnelly at shaw.ca
Wed Feb 1 15:08:20 CST 2006


Brief explanation of WSH and unicode
http://blogs.msdn.com/ericlippert/archive/2004/02/11/71472.aspx

Are you sure your input file is really Unicode format?
and are you using an odd codepage or locale? And also some intrinsic vb 
functions will convert to ANSI
and return ANSI strings from Unicode input. The ANSI being dependant on 
the machine OS codepage


Look at file with a hex editor, the first 2 or 3 bytes of the file
will be an indicator of Unicode type, plus for most Western European 
languages
in Unicode every second byte will be 00

UTF-8 - EF BB BF

UTF-16LE - FF FE

UTF-16BE - FE FF
If I run this rough vbs code testuni.vbs below , I could only get an 
error similar to yours  on this type of read
if the file with your german string is saved as ANSI.

Set oTS = fs.OpenTextFile(ascfile, 1, False, -1) 'where -1 stands for 
open as UNICODE

testuni.vbs
Function getString(StringBin)
Dim intcount
 getString = ""
 For intcount = 1 To LenB(StringBin)
        getString = getString & Chr(AscB(MidB(StringBin, intcount, 1)))
 Next
 msgbox getString
End Function


        Dim fs, ascfile, txtString, file, docString, unicodedatastring, 
stream, oTS
Const ForReading = 1, ForWriting = 2, ForAppending = 3, vbUniCode = 64
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
        ascfile = "C:\Access files\Scriptingdemo\german ascii.txt"
        Set fs = CreateObject("scripting.filesystemobject")
        Set file = fs.GetFile(ascfile)
        Set stream = file.OpenAsTextStream
        Set docString = file.OpenAsTextStream(ForReading, 
TristateUseDefault)
        
         txtString = docString.ReadAll
       
         'UnicodeDataString = StrConv(txtString,vbUniCode)
         unicodedatastring = getString(txtString)
        MsgBox ("Get String-" & unicodedatastring)
        MsgBox ("txtstring-" & txtString)
        Wscript.Echo "Get String-" & unicodedatastring
        Wscript.Echo "txtstring-" & txtString
      '  MsgBox ("StrConv-" & StrConv(txtString, vbUniCode))

            'StrConv("Text Here",vbFromUnicode) ' vbFromUnicode = 128

        Set oTS = fs.OpenTextFile(ascfile, 1, False, -1) 'where -1 
stands for open as UNICODE
        txtString = oTS.ReadLine
            unicodedatastring = getString(txtString)
        MsgBox ("Get String-" & unicodedatastring)
        MsgBox ("txtstring-" & txtString)
       Wscript.Echo "Get String-" & unicodedatastring
        Wscript.Echo "txtstring-" & txtString
'        MsgBox ("StrConv-" & StrConv(txtString, vbUniCode))
'cscript //U "C:\Access files\Scriptingdemo\testuni.vbs"   



Francisco Tapia wrote:

>I have a text file with unicode characters... when I open it up in notepad i
>can read these characters just fine, I am running a vbscript script over it
>and I noticed that when It feeds the string into a variable it just uses
>some other wierd characters instead example:
>
>
>         Set docString = file.OpenAsTextStream(ForReading,
>TristateUseDefault)
>         txtString = docString.ReadAll
>
>
>the result string is:
>Spindeloption liefert ein höheres Drehmoment im höheren
>
>but the source text document shows the following string
>
>Spindeloption liefert ein höheres Drehmoment im höheren
>
>This is being ran from a vbscript... anybody have any idea as to why?
>
>--
>-Francisco
>http://pcthis.blogspot.com |PC news with out the jargon!
>http://sqlthis.blogspot.com | Tsql and More...
>
>  
>

-- 
Marty Connelly
Victoria, B.C.
Canada






More information about the dba-Tech mailing list