0

它与“批量插入”sql 命令有关,我在某些法语口音方面遇到问题。从文本文件插入后,“à”或“急性”在数据库表中显示为 n++。这是当前转换存在问题的唯一字符。我尝试使用“WITH”子句修改命令并分配诸如“RAW”或“1252”或“ACP”之类的值,但它们都无法保留此特定字符。我使用的数据库是 Sql Server 2008。非常感谢任何帮助。谢谢。

仅供参考,我没有使用任何编码或解码技术。只是试图将文本文件中的任何内容放回数据库。


感谢您的回复。但是,将列类型从“varchar”更改为“nvarchar”实际上并没有解决问题。它现在在数据库表列中显示为“∩┐╜”。任何想法的人?非常感谢提前

4

2 回答 2

1

正如 Bridge 所说,您需要NVARCHAR. 您还需要将文件转换为 UTF-16,因为BULK INSERT即使在使用NVARCHAR.

有关更多信息,请参阅此问题

这里有几个关于转换文件编码的问题,但为了记录,这对我有用:

public static void  ConvertUtf8ToUtf16(string path, int bufferSize = 4096)
    {
    string  tempPath = path + ".tmp";

    char[]  buffer = new char[bufferSize];
    using (var input = File.OpenText(path))
    using (var output = new StreamWriter(tempPath, false, Encoding.Unicode))
        {
        int  index = 0;
        int  chars;
        while ((chars = input.Read(buffer, index, bufferSize)) > 0)
            output.Write(buffer, 0, chars);
        }

    // Swap the files
    File.Delete(path);
    File.Move(tempPath, path);
    }
于 2012-06-14T21:16:38.103 回答
0

将列类型更改为nvarchar

于 2012-06-14T21:15:55.937 回答