【问题标题】:Save a file in UTF-8 character encoding using Microsoft SQL Server (T-SQL)使用 Microsoft SQL Server (T-SQL) 以 UTF-8 字符编码保存文件
【发布时间】:2012-05-28 21:18:52
【问题描述】:

尊敬的 stackoverflow 用户,

我目前正在从事一个学校项目,该项目涉及使用其元数据从现有的 MSSQL 数据库生成 PHP Web 应用程序。我目前在将 varchar 或 nvarchar 数据类型保存到硬盘时遇到问题。我在互联网上找到了几个存储过程,它们都使用 so_OAMethod 将字符串保存到硬盘。这些存储过程都可以工作。我的问题是他们使用 UTF-16 字符编码保存文件。我们必须使用带有标准 PHP 模块的 apache 网络服务器。这样做的问题是 PHP 解释器错误地解释了 UTF-16 文件,我们确实得到了带有 PHP 代码的普通网页作为普通文本。我的问题是有办法将文件从 Microsoft SQL Server 以 UTF-8 格式保存到硬盘吗?或者是否有可能让 PHP 解释器将 UTF-16 文件解释为普通的 PHP 代码?

亲切的问候, 沃特

【问题讨论】:

    标签: php sql-server apache tsql character-encoding


    【解决方案1】:

    我假设你会在你的存储过程中调用CreateTextFile 之类的东西来写出数据,因为这些存储过程似乎调用了vbscript。这样的例程通常有一种方法来指定你想要 unicode 还是 ansi。

    所以你会得到类似的东西

    sp_OAMethod @objFileSystem , 'CreateTextFile' , @objTextStream OUT, @FileAndPath,2,True
    

    所以 Scripting.FileSystemObject 实例、要保存的文本、文件路径、覆盖?、ANSI/UNICODE(False = ANSI,True = unicode)

    通常,如果您使用此方法,它应该会自动创建一个 ANSI 文件。

    供参考:

    Sub CreateAfile
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set a = fs.CreateTextFile("c:\testfile.txt", True)
        a.WriteLine("This is a test.")
        a.Close
    End Sub
    

    【讨论】:

    • 感谢您的解决方案,我想我必须更好地阅读文档。
    • ehm,对不起,但这不会在 utf-8 中保存文件.. 使用 false,我得到一个 ascii,使用 true,我得到 utf-16,不幸的是,我从我的proc 必须是 utf-8
    猜你喜欢
    • 2018-09-20
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 2014-06-21
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    相关资源
    最近更新 更多