Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有CCSID 1208(UTF-8)和OLEDB类型问题的DB2/400字段_C#_.net_Unicode_Db2_Oledbconnection - Fatal编程技术网

C# 具有CCSID 1208(UTF-8)和OLEDB类型问题的DB2/400字段

C# 具有CCSID 1208(UTF-8)和OLEDB类型问题的DB2/400字段,c#,.net,unicode,db2,oledbconnection,C#,.net,Unicode,Db2,Oledbconnection,我在AS/400 DB2表中有一个表: SCDSC VARCHAR(120) CCSID 1208 DEFAULT NULL , CCSID 1208表示UTF-8 在我的c#代码中,这是有效的定义 cmd.Parameters.Add("scdsc", OleDbType.VarChar , 120); 我也尝试过VarWChar类型: cmd.Parameters.Add("scdsc", OleDbType.VarWChar , 120); 问题是该字段最多只能包含60个字符。我

我在AS/400 DB2表中有一个表:

SCDSC VARCHAR(120) CCSID 1208 DEFAULT NULL ,
CCSID 1208表示UTF-8

在我的c#代码中,这是有效的定义

cmd.Parameters.Add("scdsc", OleDbType.VarChar  , 120);
我也尝试过VarWChar类型:

cmd.Parameters.Add("scdsc", OleDbType.VarWChar  , 120);
问题是该字段最多只能包含60个字符。我不能让它在字段中有60个字符的长度

我觉得奇怪的是,我需要将字段的真实长度加倍(我对所有字符串字段都这样做)才能使其工作


更新:正确的实现是将DB中的字段定义为nvarchar,将oledbtype定义为varWchar。

您应该将列定义为nvarchar。您正在定义它varchar 120,这意味着它只能容纳120个字节,而不是所需的240个字节


varchar类型用于非unicode,1字节=1字符字符串。

您应该将列定义为nvarchar。您正在定义它varchar 120,这意味着它只能容纳120个字节,而不是所需的240个字节


varchar类型用于非unicode,1byte=1字符字符串。

所以在c#和DB2中必须是VarWChar 60?varchar(6)不起作用。也许是nvarchar(60)?@e4rthdog不,我的意思是,您用varchar(120)定义了您的列,其中应该是varwchar(120)…我得到了它,但首先我需要一个60个字符的字段的空间…所以为了能够容纳60个字符,我必须定义varwchar(60)和DB2 nvarchar(60)?(现在我有varchar而不是nvarchar)@e4rthdog啊,如果您需要60个unicode字符,那么将字段定义为nvarchar(60),而不是varchar(60)。那么在c#和DB2中它必须是VarWChar 60?varchar(6)不起作用。也许是nvarchar(60)?@e4rthdog不,我的意思是,您用varchar(120)定义了您的列,其中应该是varwchar(120)…我得到了它,但首先我需要一个60个字符的字段的空间…所以为了能够容纳60个字符,我必须定义varwchar(60)和DB2 nvarchar(60)?(现在我有了varchar而不是nvarchar)@e4rthdog啊,如果您需要60个unicode字符,那么将字段定义为nvarchar(60),而不是varchar(60)。