Этот файл отлично работает (UTF-8):
$ cat ok.txt
291054 Ţawī Rifā
Этот файл вызывает ошибку (UTF-8):
$ cat bad.txt
291054 Ţawī Rifā‘
Здесь сообщение:
$ freebcp 'DB.dbo.table' in bad.txt ... -c
Starting copy...
Msg 20050, Level 4
Attempt to convert data stopped by syntax error in source field
Msg 4895, Level 16, State 2
Server '...', Line 1
Unicode data is odd byte size for column 2. Should be even byte size.
Msg 20018, Level 16
General SQL Server error: Check messages from the SQL Server
Единственное отличие - это последний символ, который является unicode 2018 (левая одинарная кавычка)
Любая идея, что вызывает эту ошибку?
SQL Server использует UTF-16LE (хотя TDS начинается с UCS-2LE и, по-моему, переключается)
Соответствующая колонка nvarchar(200)
Здесь пакет, отправленный непосредственно перед ошибкой:
packet.c:741:Sending packet
0000 07 01 00 56 00 00 01 00-81 02 00 00 00 00 00 08 |...V.... ........|
0010 00 38 09 67 00 65 00 6f-00 6e 00 61 00 6d 00 65 |.8.g.e.o .n.a.m.e|
0020 00 69 00 64 00 00 00 00-00 09 00 e7 90 01 09 04 |.i.d.... ...ç....|
0030 d0 00 34 04 6e 00 61 00-6d 00 65 00 d1 ee 70 04 |Ð.4.n.a. m.e.Ñîp.|
0040 00 13 00 62 01 61 00 77-00 2b 01 20 00 52 00 69 |...b.a.w .+. .R.i|
0050 00 66 00 01 01 18 - |.f....|