символы отображаются неправильно даже при использовании источника и назначения Unicode (SSIS) - PullRequest
0 голосов
/ 08 февраля 2019

У меня проблема с кодовой страницей в кодировке Unicode / Non-Unicode, и мне нужен опыт, чтобы понять ее.

В SSIS я считываю данные из текстового файла в кодировке UTF8.Все типы данных - DT_WSTR (строка Unicode).Пункт назначения - NVARCHAR, который также является Unicode.

Нестандартные символы, такие как Ú, неправильно кодируются) (отображаются как вопросительный знак черного ящика).

Если символ правильно отображается на входефайл, для источника установлено значение DT_WSTR, а адрес назначения - nvarchar, почему символ не отображается правильно?

Я попытался установить для кодовой страницы исходного столбца значение 65001, но в SSIS можно изменить толькокодовая страница типа STR (не в Юникоде).

Буду признателен за помощь в понимании того, почему все поля Юникода по-прежнему не могут правильно хранить значение Юникода.

Обновление из комментариев OP

Кажется, мой вывод в порядке, если я использую типы Unicode от начала до конца (входные данные - DT_WSTR, целевой столбец - nvarchar; при повторном извлечении в текст - выходной столбец - DW_WSTR. Единственная проблема - SQL Server Studio Studio, которая, похоже, неуметь правильно отображать символы Юникода в результатах запроса при настройкевывод в сетку или текст.это красная сельдь, и процесс в целом работает без проблем, если игнорируется

1 Ответ

0 голосов
/ 10 февраля 2019

Попытка выяснить проблему

Нет проблем при импорте символов Unicode из плоских файлов в место назначения SQL Server, единственное, что вам нужно сделать, это установить кодировку плоского файла как Unicode, и результатстолбцы должны быть NVARCHAR.Исходя из вашего вопроса, похоже, что вы выполнили требования, поэтому я могу сказать, что:

Символ Unicode успешно импортирован в SQL Server, но по некоторым причинам SQL Server Management Studio не может отображать символы Unicode в сетке. Результаты, чтобы проверить, что данные импортированы правильно, измените вид результата изменения на Result To Text.

GoTo Tools >> Options >> Query Results >> Results To Text

Во второй ссылочной ссылке, которую я предоставил, они упомянули, что:

Если вы используете SSMS для своих запросов, измените тип вывода с «Сетка» на «Текст», поскольку в зависимости от шрифта сетка не может отображать Unicode.

Или вы можетепопробуйте изменить шрифт Grid Results, (на моем компьютере я использую шрифт Tahoma, и он обычно показывает символы Юникода)

enter image description here

Эксперименты

Вы можете выполнить следующий тест (взятый из ссылок ниже)

SET NOCOUNT ON;



CREATE TABLE #test

  (  id int IDENTITY(1, 2) NOT NULL Primary KEY

    ,Uni nvarchar(20) NULL);

INSERT INTO #test (Uni) VALUES (N'DE: äöüßÖÜÄ');

INSERT INTO #test (Uni) VALUES (N'PL: śćźłę');

INSERT INTO #test (Uni) VALUES (N'JAP: 言も言わずに');

INSERT INTO #test (Uni) VALUES (N'CHN: 玉王瓜瓦甘生用田由疋');




SELECT * FROM #test;


GO

DROP TABLE #test;

Попробуйте следующий запрос, используя опции Result as Grid и Result as Text.

Рекомендации

...