【发布时间】:2016-12-23 08:51:18
【问题描述】:
这个文件可以正常工作(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....|
【问题讨论】:
标签: sql-server unicode sql-server-2012 character-encoding freetds