代码里将中文插入oracle 乱码问题

代码中,插入到oracle数据库,中文变乱码。用pl/sql developer,却没事。

找来找去,又说调字符集,又说啥的,都不起作用。索性将心一横:我这个代码是直接执行的SQL语句,而oracle的中文字符集为GBK,而我们的程序字符集为UTF-8,那么将SQL语句在执行前,先转换成GBK如何?

string pathgbk = Utf8ToGBK(folder.PATH);//含中文的字符串转换成GBK
                string sql = "select work.SEQ_FOLDER.nextval from dual";
                int id = db.ExecuteScalar(sql);
                sql = $@"INSERT INTO work.folder (id,category,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,path,datadate,updatedate,status) 
VALUES ({id},{folder.CATEGORY},
{folder.F1},{folder.F2},{folder.F3},{folder.F4},{folder.F5},{folder.F6},{folder.F7},{folder.F8},{folder.F9},{folder.F10},
'{pathgbk}',to_date('{sDataDate}','yyyy-mm-dd HH24:MI:SS'),to_date('{sUpdateDate}','yyyy-mm-dd HH24:MI:SS'),{folder.STATUS})";
                db.ExecuteSQLCmd(sql);

string Utf8ToGBK(string utf8String)
{
    Encoding fromEncoding = Encoding.UTF8;
    Encoding toEncoding = Encoding.GetEncoding("gbk");
    return EncodingConvert(utf8String, fromEncoding, toEncoding);
}
string EncodingConvert(string fromString, Encoding fromEncoding, Encoding toEncoding)
{
    byte[] fromBytes = fromEncoding.GetBytes(fromString);
    byte[] toBytes = Encoding.Convert(fromEncoding, toEncoding, fromBytes);

    string toString = toEncoding.GetString(toBytes);
    return toString;
}

问题解决。

之前没发现有这个问题,程序是UTF-8,ORACLE是GBK,一直相安无事,大概是客户端已经做了自动转换。但上次导入了数据库备份后就出现了问题,估计是导出数据库那台机的字符集是有问题的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值