【发布时间】:2018-06-16 13:57:22
【问题描述】:
我在写入文本文件时遇到问题。当我的文本是 ASCII 时,一切正常:
DECLARE @OLE INT
DECLARE @FileId INT
DECLARE @File VARCHAR(max) = 'D:\test.txt'
DECLARE @Text NVARCHAR(max) = N'no problem when writing in english!'
EXECUTE sp_OACreate 'Scripting.FileSystemObject',@OLE OUT
EXECUTE sp_OAMethod @OLE, 'OpenTextFile', @FileId OUT, @File,2,1
EXECUTE sp_OAMethod @FileId, 'WriteLine', Null, @Text
但是当我的文本包含 Unicode 字符时,文件中不会出现任何内容:
DECLARE @Text NVARCHAR(max) = N'من نمایش داده نمیشم'
我也试过sp_OASetProperty,但没用(mentioned here):
EXECUTE sp_OASetProperty @OLE, 'Charset', 'UTF-8'
有解决此问题或使用其他 T-SQL 过程的想法吗?
【问题讨论】:
-
如果你想要 UTF-8 而不是 UTF-16,VBScripters 使用“ADODB.Stream”对象。 (不过,我从未在 SQL 中使用过它,而 sp_OACreate 对我来说是新的。SQLCLR 将是我的首选。)
标签: sql sql-server tsql unicode