FileSystemObject能否读取拉丁文?高手帮个忙。

是这样的,我要自动导入一批数据去SQL Server,于是做了一段函数,但是发现SQL Server中导入的拉丁文都变成了问号。请问如何解决。
SQL Server中我用的是nvarchar,ntext类型。

OpenTextFile方法我用format是-2

我在msdn上查到unicode是-1,但用了就报错

object.OpenTextFile(filename[, iomode[, create[, format]]])
Format 参数可为下面设置值的任何值:
常数 值 描述
TristateUseDefault –-2 使用系统缺省打开文件。
TristateTrue –-1 以 Unicode 格式打开文件。
TristateFalse 0 以 ASCII 格式打开文件。

这里是我写的那段函数:
Function funcInsertChrist2(pstrTableName)
Dim strFile,objFileSystemObject,objTextStream,strHTML,strALLHTML,intCount,intStartPosition,intEndPosition,strSmallTitle,intLen,objRS,strSQL,strA,strB
'使用 CreateObject 方法创建 FileSystemObject 对象 objFileSystemObject
Set objFileSystemObject = Server.CreateObject("Scripting.FileSystemObject")
'校验函数所在位置
strFile = Server.MapPath("christ.txt")

'判断该文件是否存在
If objFileSystemObject.FileExists(strFile) = True Then
'打开文件
Set objTextStream = objFileSystemObject.OpenTextFile(strFile,1,false,-2)
Else
'产生一个文件名不存在的错误
Err.Raise vbObjectError + 1001,"错误","基督教大辞典没有被发现"
End If

'判别是否文件结尾
'strALLHTML=""
'intCount = 0

Do While objTextStream.AtEndOfStream <> True
'读取文件的每一行
strHTML = objTextStream.ReadLine
strHTML = Trim(strHTML)
strHTML = replace(strHTML,"'","''")
If InStr(1,strHTML,"【")>0 Then

' 创建记录集对象。
Set objRS = Server.CreateObject("ADODB.Recordset")
'objRS.CursorLocation = adUseClient '此设置可减轻数据库负载。
strSQL = "INSERT INTO " & pstrTableName & "(c_text)"
strSQL = strSQL & "values(" & "'" & strHtml & "'" & ")"
objRS.Open strSQL,Application("strConn"),adOpenStatic,adLockOptimistic, adCmdText
set objRS = nothing
End If
Loop

'释放对象
objTextStream.Close
Set objTextStream = Nothing
Set objFileSystemObject = Nothing

End Function

---------------------------------------------------------------

没处理过这样的编码,不过单独用stream流应该可以的。
dim st
dim c
dim strHTML
st = Server.CreateObject("adodb.stream")
st.Type = 2
st.Open
st.Position = 0
st.loadFromFile Server.MapPath("christ.txt")
c = st.readText
st.close
c = split(c,chr(13)&chr(10))
for each strHTML in c
strHTML = Trim(strHTML)
strHTML = replace(strHTML,"'","''")
......
next

方法2:
如果你的空间够大的话,那就用escape函数来加密数据,用的时候用unescape来解密。这个方法适合于任何编码的数据。

 1<script language="javascript" runat="server">   
 2var st = new ActiveXObject("adodb.stream")   
 3st.Type = 2   
 4st.Open()   
 5st.Position = 0   
 6st.loadFromFile(Server.MapPath("CHRIST.txt"))   
 7var content = st.ReadText   
 8st.Close()   
 9var c = content.split(/\n/g)   
10var conn = new ActiveXObject("adodb.connection")   
11conn.open("Provider=Microsoft.jet.oledb.4.0;data source="+server.MapPath("db.mdb")   
12for (var i=0;i<c.length;i++){   
13var rs = new ActiveXObject("adodb.recordset")   
14rs.open("christ",conn,3,2)   
15rs.addnew()   
16rs("test") = escape(c[i].replace("'","''"))   
17rs.update()   
18rs.Close()   
19}   
20var ors = new ActiveXObject("adodb.recordset")   
21ors.open("christ",conn,3,2)   
22do{   
23Response.Write(unescape(ors("test"))+"<br>")   
24ors.movenext()   
25}while(!(ors.eof ¦ &brvbarors.bof))   
26</script>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus