设有oracle数据库,数据库编码为us7ascii,有表DT_TEST,表结构为:
CREATE TABLE DT_TEST
(
ID NUMBER,
NAME VARCHAR2(64)
)
C#向表插入一条数据,NAME列直接插入中文会乱码,显示'?????????',需要进行转码
string strName = "趣趣李";
string strResult = "null";//这个是必要的赋值
if (!string.IsNullOrEmpty(strName))
{
Encoding encEmr = Encoding.GetEncoding("GB2312");
byte[] bt = encEmr.GetBytes(strName);//byte数组索引从0往后内容依次为200 164 200 164 192 238
List
for (int i = 0; i < bt.Length; i++)
{
lst.Add("chr(" + bt[i].ToString() + ")");
}
strResult = string.Join("||", lst);//内容为CHR(200)||CHR(164)||CHR(200)||CHR(164)||CHR(192)||CHR(238)
}
string sql = "INSERT INTO DT_TEST (ID,NAME) VALUES (1," + strResult + ")";//切记name列的value前后一定不要加单引号'
执行后oralce数据库保存的name列就是中文啦~~~