UTF8 проблема SQL Server - PullRequest
       3

UTF8 проблема SQL Server

2 голосов
/ 26 июля 2010

У меня есть некоторые данные utf8, которые я бы хотел вставить в массив (sql server 2005). Я использую CODEPAGE 65001:

BULK INSERT #bla
FROM 'D:\bla.txt'  
WITH 
( 
    CODEPAGE=65001,
    FIELDTERMINATOR = '\t', 
    ROWTERMINATOR = '\n'
)

К сожалению, такие строки:

Erdağı

в итоге будет храниться так:

Erda ??

Я использую неправильную кодовую страницу? Есть ли что-нибудь еще, что я могу сделать?

Спасибо.

Christian

Ответы [ 2 ]

3 голосов
/ 26 июля 2010

Согласно этой ссылке , «SQL Server не поддерживает кодовую страницу 65001 (кодировка UTF-8)». Сначала я думал, что это относится только к 2008 году, но согласно ответу технического писателя Microsoft на вопрос по этой ссылке , «SQL Server никогда не поддерживал кодовую страницу 65001 (кодировка UTF-8)».

0 голосов
/ 26 июня 2015

Вы можете использовать c # для решения этой проблемы:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace UTF8toUCS2
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length != 1) 
            {
                Console.WriteLine("exampe: UTF8toUS2 [filepath]");
                return;
            }

            var filename = args[0];

            byte[] content = File.ReadAllBytes(filename);

            byte[] newArray = new byte[content.Length + 3];

            newArray[0] = (byte)0xEF;
            newArray[1] = (byte)0xBB;
            newArray[2] = (byte)0xBF;

            Array.Copy(content, 0, newArray, 3, content.Length);

            byte[] utcs2Bytes = System.Text.Encoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.Unicode, newArray);

            File.WriteAllBytes(filename, utcs2Bytes);
       }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...